(0) Obligation:

JBC Problem based on JBC Program:
Manifest-Version: 1.0 Created-By: 1.6.0_24 (Apple Inc.) Main-Class: Parts
public class Parts {

public static int parts(int p, int q) {
if (p <= 0) return 1;
else if (q <= 0) return 0;
else if (q > p) return parts(p, p);
else return parts(p-q, q) + parts(p, q-1);
}

public static void main(String args[]) {
for (int p = 0; p <= args.length; p++)
for (int q = 0; q <= args.length; q++)
parts(p, q);
}
}

(1) JBCToGraph (SOUND transformation)

Constructed TerminationGraph.

(2) Obligation:

Termination Graph based on JBC Program:
Parts.main([Ljava/lang/String;)V: Graph of 84 nodes with 1 SCC.

Parts.parts(II)I: Graph of 82 nodes with 0 SCCs.


(3) TerminationGraphToSCCProof (SOUND transformation)

Splitted TerminationGraph to 2 SCCss.

(4) Complex Obligation (AND)

(5) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: Parts.parts(II)I
SCC calls the following helper methods: Parts.parts(II)I
Performed SCC analyses: UsedFieldsAnalysis

(6) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 49 rules for P and 39 rules for R.


P rules:
997_0_parts_GT(EOS(STATIC_997), i164, i160, i164) → 1000_0_parts_GT(EOS(STATIC_1000), i164, i160, i164)
1000_0_parts_GT(EOS(STATIC_1000), i164, i160, i164) → 1003_0_parts_Load(EOS(STATIC_1003), i164, i160) | >(i164, 0)
1003_0_parts_Load(EOS(STATIC_1003), i164, i160) → 1006_0_parts_GT(EOS(STATIC_1006), i164, i160, i160)
1006_0_parts_GT(EOS(STATIC_1006), i164, i166, i166) → 1010_0_parts_GT(EOS(STATIC_1010), i164, i166, i166)
1010_0_parts_GT(EOS(STATIC_1010), i164, i166, i166) → 1016_0_parts_Load(EOS(STATIC_1016), i164, i166) | >(i166, 0)
1016_0_parts_Load(EOS(STATIC_1016), i164, i166) → 1020_0_parts_Load(EOS(STATIC_1020), i164, i166, i166)
1020_0_parts_Load(EOS(STATIC_1020), i164, i166, i166) → 1025_0_parts_LE(EOS(STATIC_1025), i164, i166, i166, i164)
1025_0_parts_LE(EOS(STATIC_1025), i164, i166, i166, i164) → 1029_0_parts_LE(EOS(STATIC_1029), i164, i166, i166, i164)
1025_0_parts_LE(EOS(STATIC_1025), i164, i166, i166, i164) → 1030_0_parts_LE(EOS(STATIC_1030), i164, i166, i166, i164)
1029_0_parts_LE(EOS(STATIC_1029), i164, i166, i166, i164) → 1034_0_parts_Load(EOS(STATIC_1034), i164, i166) | <=(i166, i164)
1034_0_parts_Load(EOS(STATIC_1034), i164, i166) → 1044_0_parts_Load(EOS(STATIC_1044), i164, i166, i164)
1044_0_parts_Load(EOS(STATIC_1044), i164, i166, i164) → 1048_0_parts_IntArithmetic(EOS(STATIC_1048), i164, i166, i164, i166)
1048_0_parts_IntArithmetic(EOS(STATIC_1048), i164, i166, i164, i166) → 1053_0_parts_Load(EOS(STATIC_1053), i164, i166, -(i164, i166)) | &&(>(i164, 0), >(i166, 0))
1053_0_parts_Load(EOS(STATIC_1053), i164, i166, i176) → 1058_0_parts_InvokeMethod(EOS(STATIC_1058), i164, i166, i176, i166)
1058_0_parts_InvokeMethod(EOS(STATIC_1058), i164, i166, i176, i166) → 1063_1_parts_InvokeMethod(1063_0_parts_Load(EOS(STATIC_1063), i176, i166), i164, i166, i176, i166)
1063_0_parts_Load(EOS(STATIC_1063), i176, i166) → 1068_0_parts_Load(EOS(STATIC_1068), i176, i166)
1063_1_parts_InvokeMethod(1004_0_parts_Return(EOS(STATIC_1004), i185, i186, matching1), i164, i186, i185, i186) → 1165_0_parts_Return(EOS(STATIC_1165), i164, i186, i185, i186, i185, i186, 1) | =(matching1, 1)
1063_1_parts_InvokeMethod(1689_0_parts_Return(EOS(STATIC_1689), i770, i771, i723), i164, i771, i770, i771) → 1736_0_parts_Return(EOS(STATIC_1736), i164, i771, i770, i771, i770, i771, i723)
1063_1_parts_InvokeMethod(1749_0_parts_Return(EOS(STATIC_1749), i825, i826, i778), i164, i826, i825, i826) → 1775_0_parts_Return(EOS(STATIC_1775), i164, i826, i825, i826, i825, i826, i778)
1063_1_parts_InvokeMethod(3772_0_parts_Return(EOS(STATIC_3772), i946), i164, i954, i953, i954) → 3778_0_parts_Return(EOS(STATIC_3778), i164, i954, i953, i954, i946)
1068_0_parts_Load(EOS(STATIC_1068), i176, i166) → 996_0_parts_Load(EOS(STATIC_996), i176, i166)
996_0_parts_Load(EOS(STATIC_996), i159, i160) → 997_0_parts_GT(EOS(STATIC_997), i159, i160, i159)
1165_0_parts_Return(EOS(STATIC_1165), i164, i186, i185, i186, i185, i186, matching1) → 1168_0_parts_Load(EOS(STATIC_1168), i164, i186, 1) | =(matching1, 1)
1168_0_parts_Load(EOS(STATIC_1168), i164, i186, matching1) → 1228_0_parts_Load(EOS(STATIC_1228), i164, i186, 1) | =(matching1, 1)
1228_0_parts_Load(EOS(STATIC_1228), i164, i265, matching1) → 1255_0_parts_Load(EOS(STATIC_1255), i164, i265, 1) | =(matching1, 1)
1255_0_parts_Load(EOS(STATIC_1255), i164, i279, matching1) → 1367_0_parts_Load(EOS(STATIC_1367), i164, i279, 1) | =(matching1, 1)
1367_0_parts_Load(EOS(STATIC_1367), i164, i357, i358) → 1411_0_parts_Load(EOS(STATIC_1411), i164, i357, i358)
1411_0_parts_Load(EOS(STATIC_1411), i164, i429, i431) → 1529_0_parts_Load(EOS(STATIC_1529), i164, i429, i431)
1529_0_parts_Load(EOS(STATIC_1529), i164, i543, i544) → 1582_0_parts_Load(EOS(STATIC_1582), i164, i543, i544)
1582_0_parts_Load(EOS(STATIC_1582), i164, i624, i626) → 1692_0_parts_Load(EOS(STATIC_1692), i164, i624, i626)
1692_0_parts_Load(EOS(STATIC_1692), i164, i732, i733) → 1752_0_parts_Load(EOS(STATIC_1752), i164, i732, i733)
1752_0_parts_Load(EOS(STATIC_1752), i164, i788, i790) → 1757_0_parts_Load(EOS(STATIC_1757), i788, i790, i164)
1757_0_parts_Load(EOS(STATIC_1757), i788, i790, i164) → 1767_0_parts_ConstantStackPush(EOS(STATIC_1767), i790, i164, i788)
1767_0_parts_ConstantStackPush(EOS(STATIC_1767), i790, i164, i788) → 1779_0_parts_IntArithmetic(EOS(STATIC_1779), i790, i164, i788, 1)
1779_0_parts_IntArithmetic(EOS(STATIC_1779), i790, i164, i788, matching1) → 1784_0_parts_InvokeMethod(EOS(STATIC_1784), i790, i164, -(i788, 1)) | &&(>(i788, 0), =(matching1, 1))
1784_0_parts_InvokeMethod(EOS(STATIC_1784), i790, i164, i840) → 1786_1_parts_InvokeMethod(1786_0_parts_Load(EOS(STATIC_1786), i164, i840), i790, i164, i840)
1786_0_parts_Load(EOS(STATIC_1786), i164, i840) → 1788_0_parts_Load(EOS(STATIC_1788), i164, i840)
1788_0_parts_Load(EOS(STATIC_1788), i164, i840) → 996_0_parts_Load(EOS(STATIC_996), i164, i840)
1736_0_parts_Return(EOS(STATIC_1736), i164, i771, i770, i771, i770, i771, i723) → 1737_0_parts_Return(EOS(STATIC_1737), i164, i771, i770, i771, i770, i771, i723)
1737_0_parts_Return(EOS(STATIC_1737), i164, i788, i789, i788, i789, i788, i790) → 1752_0_parts_Load(EOS(STATIC_1752), i164, i788, i790)
1775_0_parts_Return(EOS(STATIC_1775), i164, i826, i825, i826, i825, i826, i778) → 1737_0_parts_Return(EOS(STATIC_1737), i164, i826, i825, i826, i825, i826, i778)
3778_0_parts_Return(EOS(STATIC_3778), i164, i954, i953, i954, i946) → 1675_0_parts_Return(EOS(STATIC_1675), i164, i954, i953, i954, i946)
1675_0_parts_Return(EOS(STATIC_1675), i164, i732, i734, i732, i733) → 1692_0_parts_Load(EOS(STATIC_1692), i164, i732, i733)
1030_0_parts_LE(EOS(STATIC_1030), i164, i166, i166, i164) → 1036_0_parts_Load(EOS(STATIC_1036), i164, i166) | >(i166, i164)
1036_0_parts_Load(EOS(STATIC_1036), i164, i166) → 1045_0_parts_Load(EOS(STATIC_1045), i164, i166, i164)
1045_0_parts_Load(EOS(STATIC_1045), i164, i166, i164) → 1050_0_parts_InvokeMethod(EOS(STATIC_1050), i164, i166, i164, i164)
1050_0_parts_InvokeMethod(EOS(STATIC_1050), i164, i166, i164, i164) → 1055_1_parts_InvokeMethod(1055_0_parts_Load(EOS(STATIC_1055), i164, i164), i164, i166, i164, i164)
1055_0_parts_Load(EOS(STATIC_1055), i164, i164) → 1059_0_parts_Load(EOS(STATIC_1059), i164, i164)
1059_0_parts_Load(EOS(STATIC_1059), i164, i164) → 996_0_parts_Load(EOS(STATIC_996), i164, i164)
R rules:
997_0_parts_GT(EOS(STATIC_997), i163, i160, i163) → 999_0_parts_GT(EOS(STATIC_999), i163, i160, i163)
999_0_parts_GT(EOS(STATIC_999), i163, i160, i163) → 1002_0_parts_ConstantStackPush(EOS(STATIC_1002), i163, i160) | <=(i163, 0)
1002_0_parts_ConstantStackPush(EOS(STATIC_1002), i163, i160) → 1004_0_parts_Return(EOS(STATIC_1004), i163, i160, 1)
1006_0_parts_GT(EOS(STATIC_1006), i164, matching1, matching2) → 1009_0_parts_GT(EOS(STATIC_1009), i164, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1009_0_parts_GT(EOS(STATIC_1009), i164, matching1, matching2) → 1014_0_parts_ConstantStackPush(EOS(STATIC_1014), i164, 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
1014_0_parts_ConstantStackPush(EOS(STATIC_1014), i164, matching1) → 1018_0_parts_Return(EOS(STATIC_1018), i164, 0, 0) | =(matching1, 0)
1055_1_parts_InvokeMethod(1689_0_parts_Return(EOS(STATIC_1689), i768, i768, i723), i768, i166, i768, i768) → 1730_0_parts_Return(EOS(STATIC_1730), i768, i166, i768, i768, i768, i768, i723)
1055_1_parts_InvokeMethod(1749_0_parts_Return(EOS(STATIC_1749), i823, i823, i778), i823, i166, i823, i823) → 1772_0_parts_Return(EOS(STATIC_1772), i823, i166, i823, i823, i823, i823, i778)
1055_1_parts_InvokeMethod(3772_0_parts_Return(EOS(STATIC_3772), i946), i952, i166, i952, i952) → 3777_0_parts_Return(EOS(STATIC_3777), i952, i166, i952, i952, i946)
1221_0_parts_Return(EOS(STATIC_1221), i263, i166, i263, i263, matching1) → 1334_0_parts_Return(EOS(STATIC_1334), i263, i166, i263, i263, 1) | =(matching1, 1)
1222_0_parts_Return(EOS(STATIC_1222), i164, i265, i264, i265, matching1) → 1340_0_parts_Return(EOS(STATIC_1340), i164, i265, i264, i265, 1) | =(matching1, 1)
1244_0_parts_Return(EOS(STATIC_1244), i276, i166, i276, i276, i276, i276, matching1) → 1391_0_parts_Return(EOS(STATIC_1391), i276, i166, i276, i276, i276, i276, 1) | =(matching1, 1)
1246_0_parts_Return(EOS(STATIC_1246), i164, i279, i278, i279, i278, i279, matching1) → 1396_0_parts_Return(EOS(STATIC_1396), i164, i279, i278, i279, i278, i279, 1) | =(matching1, 1)
1334_0_parts_Return(EOS(STATIC_1334), i345, i166, i345, i345, i346) → 1489_0_parts_Return(EOS(STATIC_1489), i345, i166, i345, i345, i346)
1340_0_parts_Return(EOS(STATIC_1340), i164, i357, i359, i357, i358) → 1495_0_parts_Return(EOS(STATIC_1495), i164, i357, i359, i357, i358)
1391_0_parts_Return(EOS(STATIC_1391), i418, i166, i418, i418, i418, i418, i419) → 1558_0_parts_Return(EOS(STATIC_1558), i418, i166, i418, i418, i418, i418, i419)
1396_0_parts_Return(EOS(STATIC_1396), i164, i429, i430, i429, i430, i429, i431) → 1565_0_parts_Return(EOS(STATIC_1565), i164, i429, i430, i429, i430, i429, i431)
1489_0_parts_Return(EOS(STATIC_1489), i531, i166, i531, i531, i532) → 1668_0_parts_Return(EOS(STATIC_1668), i531, i166, i531, i531, i532)
1495_0_parts_Return(EOS(STATIC_1495), i164, i543, i545, i543, i544) → 1675_0_parts_Return(EOS(STATIC_1675), i164, i543, i545, i543, i544)
1558_0_parts_Return(EOS(STATIC_1558), i613, i166, i613, i613, i613, i613, i614) → 1731_0_parts_Return(EOS(STATIC_1731), i613, i166, i613, i613, i613, i613, i614)
1565_0_parts_Return(EOS(STATIC_1565), i164, i624, i625, i624, i625, i624, i626) → 1737_0_parts_Return(EOS(STATIC_1737), i164, i624, i625, i624, i625, i624, i626)
1668_0_parts_Return(EOS(STATIC_1668), i722, i166, i722, i722, i723) → 1689_0_parts_Return(EOS(STATIC_1689), i722, i166, i723)
1689_0_parts_Return(EOS(STATIC_1689), i722, i166, i723) → 1749_0_parts_Return(EOS(STATIC_1749), i722, i166, i723)
1730_0_parts_Return(EOS(STATIC_1730), i768, i166, i768, i768, i768, i768, i723) → 1731_0_parts_Return(EOS(STATIC_1731), i768, i166, i768, i768, i768, i768, i723)
1731_0_parts_Return(EOS(STATIC_1731), i777, i166, i777, i777, i777, i777, i778) → 1749_0_parts_Return(EOS(STATIC_1749), i777, i166, i778)
1772_0_parts_Return(EOS(STATIC_1772), i823, i166, i823, i823, i823, i823, i778) → 1731_0_parts_Return(EOS(STATIC_1731), i823, i166, i823, i823, i823, i823, i778)
1786_1_parts_InvokeMethod(1018_0_parts_Return(EOS(STATIC_1018), i844, matching1, matching2), i790, i844, matching3) → 1800_0_parts_Return(EOS(STATIC_1800), i790, i844, 0, i844, 0, 0) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
1786_1_parts_InvokeMethod(1689_0_parts_Return(EOS(STATIC_1689), i845, i846, i723), i790, i845, i846) → 1801_0_parts_Return(EOS(STATIC_1801), i790, i845, i846, i845, i846, i723)
1786_1_parts_InvokeMethod(1749_0_parts_Return(EOS(STATIC_1749), i847, i848, i778), i790, i847, i848) → 1804_0_parts_Return(EOS(STATIC_1804), i790, i847, i848, i847, i848, i778)
1786_1_parts_InvokeMethod(3772_0_parts_Return(EOS(STATIC_3772), i946), i790, i958, i959) → 3781_0_parts_Return(EOS(STATIC_3781), i790, i958, i959, i946)
1800_0_parts_Return(EOS(STATIC_1800), i790, i844, matching1, i844, matching2, matching3) → 1805_0_parts_IntArithmetic(EOS(STATIC_1805), i790, 0) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
1801_0_parts_Return(EOS(STATIC_1801), i790, i845, i846, i845, i846, i723) → 1807_0_parts_IntArithmetic(EOS(STATIC_1807), i790, i723)
1804_0_parts_Return(EOS(STATIC_1804), i790, i847, i848, i847, i848, i778) → 1801_0_parts_Return(EOS(STATIC_1801), i790, i847, i848, i847, i848, i778)
1805_0_parts_IntArithmetic(EOS(STATIC_1805), i790, matching1) → 1807_0_parts_IntArithmetic(EOS(STATIC_1807), i790, 0) | =(matching1, 0)
1807_0_parts_IntArithmetic(EOS(STATIC_1807), i790, i723) → 3771_0_parts_IntArithmetic(EOS(STATIC_3771), i790, i723)
1832_0_parts_Return(EOS(STATIC_1832), i790, i870, i871, i858) → 3771_0_parts_IntArithmetic(EOS(STATIC_3771), i790, i858)
3771_0_parts_IntArithmetic(EOS(STATIC_3771), i790, i858) → 3772_0_parts_Return(EOS(STATIC_3772), +(i790, i858))
3777_0_parts_Return(EOS(STATIC_3777), i952, i166, i952, i952, i946) → 1668_0_parts_Return(EOS(STATIC_1668), i952, i166, i952, i952, i946)
3781_0_parts_Return(EOS(STATIC_3781), i790, i958, i959, i946) → 1832_0_parts_Return(EOS(STATIC_1832), i790, i958, i959, i946)

Combined rules. Obtained 6 conditional rules for P and 8 conditional rules for R.


P rules:
997_0_parts_GT(EOS(STATIC_997), x0, x1, x0) → 1063_1_parts_InvokeMethod(997_0_parts_GT(EOS(STATIC_997), -(x0, x1), x1, -(x0, x1)), x0, x1, -(x0, x1), x1) | &&(&&(>(x1, 0), <=(x1, x0)), >(x0, 0))
1063_1_parts_InvokeMethod(1004_0_parts_Return(EOS(STATIC_1004), x0, x1, 1), x3, x1, x0, x1) → 1786_1_parts_InvokeMethod(997_0_parts_GT(EOS(STATIC_997), x3, -(x1, 1), x3), 1, x3, -(x1, 1)) | >(x1, 0)
1063_1_parts_InvokeMethod(1689_0_parts_Return(EOS(STATIC_1689), x0, x1, x2), x3, x1, x0, x1) → 1786_1_parts_InvokeMethod(997_0_parts_GT(EOS(STATIC_997), x3, -(x1, 1), x3), x2, x3, -(x1, 1)) | >(x1, 0)
1063_1_parts_InvokeMethod(1749_0_parts_Return(EOS(STATIC_1749), x0, x1, x2), x3, x1, x0, x1) → 1786_1_parts_InvokeMethod(997_0_parts_GT(EOS(STATIC_997), x3, -(x1, 1), x3), x2, x3, -(x1, 1)) | >(x1, 0)
1063_1_parts_InvokeMethod(3772_0_parts_Return(EOS(STATIC_3772), x0), x1, x2, x3, x2) → 1786_1_parts_InvokeMethod(997_0_parts_GT(EOS(STATIC_997), x1, -(x2, 1), x1), x0, x1, -(x2, 1)) | >(x2, 0)
997_0_parts_GT(EOS(STATIC_997), x0, x1, x0) → 1055_1_parts_InvokeMethod(997_0_parts_GT(EOS(STATIC_997), x0, x0, x0), x0, x1, x0, x0) | &&(&&(>(x1, x0), >(x1, 0)), >(x0, 0))
R rules:
997_0_parts_GT(EOS(STATIC_997), x0, x1, x0) → 1004_0_parts_Return(EOS(STATIC_1004), x0, x1, 1) | <=(x0, 0)
1055_1_parts_InvokeMethod(1689_0_parts_Return(EOS(STATIC_1689), x0, x0, x1), x0, x2, x0, x0) → 1749_0_parts_Return(EOS(STATIC_1749), x0, x2, x1)
1055_1_parts_InvokeMethod(1749_0_parts_Return(EOS(STATIC_1749), x0, x0, x1), x0, x2, x0, x0) → 1749_0_parts_Return(EOS(STATIC_1749), x0, x2, x1)
1055_1_parts_InvokeMethod(3772_0_parts_Return(EOS(STATIC_3772), x0), x1, x2, x1, x1) → 1749_0_parts_Return(EOS(STATIC_1749), x1, x2, x0)
1786_1_parts_InvokeMethod(1689_0_parts_Return(EOS(STATIC_1689), x0, x1, x2), x3, x0, x1) → 3772_0_parts_Return(EOS(STATIC_3772), +(x3, x2))
1786_1_parts_InvokeMethod(1749_0_parts_Return(EOS(STATIC_1749), x0, x1, x2), x3, x0, x1) → 3772_0_parts_Return(EOS(STATIC_3772), +(x3, x2))
1786_1_parts_InvokeMethod(1018_0_parts_Return(EOS(STATIC_1018), x0, 0, 0), arith[1], x0, 0) → 3772_0_parts_Return(EOS(STATIC_3772), arith[1])
1786_1_parts_InvokeMethod(3772_0_parts_Return(EOS(STATIC_3772), x0), x1, x2, x3) → 3772_0_parts_Return(EOS(STATIC_3772), +(x1, x0))

Filtered ground terms:



997_0_parts_GT(x1, x2, x3, x4) → 997_0_parts_GT(x2, x3, x4)
Cond_997_0_parts_GT1(x1, x2, x3, x4, x5) → Cond_997_0_parts_GT1(x1, x3, x4, x5)
3772_0_parts_Return(x1, x2) → 3772_0_parts_Return(x2)
1749_0_parts_Return(x1, x2, x3, x4) → 1749_0_parts_Return(x2, x3, x4)
1689_0_parts_Return(x1, x2, x3, x4) → 1689_0_parts_Return(x2, x3, x4)
1004_0_parts_Return(x1, x2, x3, x4) → 1004_0_parts_Return(x2, x3)
Cond_997_0_parts_GT(x1, x2, x3, x4, x5) → Cond_997_0_parts_GT(x1, x3, x4, x5)
1018_0_parts_Return(x1, x2, x3, x4) → 1018_0_parts_Return(x2)

Filtered duplicate args:



997_0_parts_GT(x1, x2, x3) → 997_0_parts_GT(x2, x3)
Cond_997_0_parts_GT(x1, x2, x3, x4) → Cond_997_0_parts_GT(x1, x3, x4)
1063_1_parts_InvokeMethod(x1, x2, x3, x4, x5) → 1063_1_parts_InvokeMethod(x1, x2, x4, x5)
Cond_1063_1_parts_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1063_1_parts_InvokeMethod(x1, x2, x3)
Cond_1063_1_parts_InvokeMethod1(x1, x2, x3, x4, x5, x6) → Cond_1063_1_parts_InvokeMethod1(x1, x2, x3)
Cond_1063_1_parts_InvokeMethod2(x1, x2, x3, x4, x5, x6) → Cond_1063_1_parts_InvokeMethod2(x1, x2, x3)
Cond_1063_1_parts_InvokeMethod3(x1, x2, x3, x4, x5, x6) → Cond_1063_1_parts_InvokeMethod3(x1, x2, x3, x5, x6)
Cond_997_0_parts_GT1(x1, x2, x3, x4) → Cond_997_0_parts_GT1(x1, x3, x4)
1055_1_parts_InvokeMethod(x1, x2, x3, x4, x5) → 1055_1_parts_InvokeMethod(x1, x3, x5)

Filtered unneeded arguments:



1786_1_parts_InvokeMethod(x1, x2, x3, x4) → 1786_1_parts_InvokeMethod(x1, x3, x4)
Cond_1063_1_parts_InvokeMethod3(x1, x2, x3, x4, x5) → Cond_1063_1_parts_InvokeMethod3(x1, x3, x5)
1689_0_parts_Return(x1, x2, x3) → 1689_0_parts_Return(x1, x2)
1749_0_parts_Return(x1, x2, x3) → 1749_0_parts_Return(x1, x2)
1004_0_parts_Return(x1, x2) → 1004_0_parts_Return(x2)

Combined rules. Obtained 6 conditional rules for P and 8 conditional rules for R.


P rules:
997_0_parts_GT(x1, x0) → 1063_1_parts_InvokeMethod(997_0_parts_GT(x1, -(x0, x1)), x0, -(x0, x1), x1) | &&(&&(>(x1, 0), <=(x1, x0)), >(x0, 0))
1063_1_parts_InvokeMethod(1004_0_parts_Return(x1), x3, x0, x1) → 1786_1_parts_InvokeMethod(997_0_parts_GT(-(x1, 1), x3), x3, -(x1, 1)) | >(x1, 0)
1063_1_parts_InvokeMethod(1689_0_parts_Return(x0, x1), x3, x0, x1) → 1786_1_parts_InvokeMethod(997_0_parts_GT(-(x1, 1), x3), x3, -(x1, 1)) | >(x1, 0)
1063_1_parts_InvokeMethod(1749_0_parts_Return(x0, x1), x3, x0, x1) → 1786_1_parts_InvokeMethod(997_0_parts_GT(-(x1, 1), x3), x3, -(x1, 1)) | >(x1, 0)
1063_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x3, x2) → 1786_1_parts_InvokeMethod(997_0_parts_GT(-(x2, 1), x1), x1, -(x2, 1)) | >(x2, 0)
997_0_parts_GT(x1, x0) → 1055_1_parts_InvokeMethod(997_0_parts_GT(x0, x0), x1, x0) | &&(&&(>(x1, x0), >(x1, 0)), >(x0, 0))
R rules:
997_0_parts_GT(x1, x0) → 1004_0_parts_Return(x1) | <=(x0, 0)
1055_1_parts_InvokeMethod(1689_0_parts_Return(x0, x0), x2, x0) → 1749_0_parts_Return(x0, x2)
1055_1_parts_InvokeMethod(1749_0_parts_Return(x0, x0), x2, x0) → 1749_0_parts_Return(x0, x2)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2, x1) → 1749_0_parts_Return(x1, x2)
1786_1_parts_InvokeMethod(1689_0_parts_Return(x0, x1), x0, x1) → 3772_0_parts_Return(+(x3, x2))
1786_1_parts_InvokeMethod(1749_0_parts_Return(x0, x1), x0, x1) → 3772_0_parts_Return(+(x3, x2))
1786_1_parts_InvokeMethod(1018_0_parts_Return(x0), x0, 0) → 3772_0_parts_Return(arith[1])
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2, x3) → 3772_0_parts_Return(+(x1, x0))

Performed bisimulation on rules. Used the following equivalence classes: {[1689_0_parts_Return_2, 1749_0_parts_Return_2]=1689_0_parts_Return_2, [1004_0_parts_Return_1, 1018_0_parts_Return_1]=1004_0_parts_Return_1, [Cond_1063_1_parts_InvokeMethod1_5, Cond_1063_1_parts_InvokeMethod2_5]=Cond_1063_1_parts_InvokeMethod1_5}


Finished conversion. Obtained 11 rules for P and 7 rules for R. System has predefined symbols.


P rules:
997_0_PARTS_GT(x1, x0) → COND_997_0_PARTS_GT(&&(&&(>(x1, 0), <=(x1, x0)), >(x0, 0)), x1, x0)
COND_997_0_PARTS_GT(TRUE, x1, x0) → 1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1, -(x0, x1)), x0, -(x0, x1), x1)
COND_997_0_PARTS_GT(TRUE, x1, x0) → 997_0_PARTS_GT(x1, -(x0, x1))
1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1), x3, x0, x1) → COND_1063_1_PARTS_INVOKEMETHOD(>(x1, 0), 1004_0_parts_Return(x1), x3, x0, x1)
COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1), x3, x0, x1) → 997_0_PARTS_GT(-(x1, 1), x3)
1063_1_PARTS_INVOKEMETHOD(1689_0_parts_Return(x0, x1), x3, x0, x1) → COND_1063_1_PARTS_INVOKEMETHOD1(>(x1, 0), 1689_0_parts_Return(x0, x1), x3, x0, x1)
COND_1063_1_PARTS_INVOKEMETHOD1(TRUE, 1689_0_parts_Return(x0, x1), x3, x0, x1) → 997_0_PARTS_GT(-(x1, 1), x3)
1063_1_PARTS_INVOKEMETHOD(3772_0_parts_Return(x0), x1, x3, x2) → COND_1063_1_PARTS_INVOKEMETHOD3(>(x2, 0), 3772_0_parts_Return(x0), x1, x3, x2)
COND_1063_1_PARTS_INVOKEMETHOD3(TRUE, 3772_0_parts_Return(x0), x1, x3, x2) → 997_0_PARTS_GT(-(x2, 1), x1)
997_0_PARTS_GT(x1, x0) → COND_997_0_PARTS_GT1(&&(&&(>(x1, x0), >(x1, 0)), >(x0, 0)), x1, x0)
COND_997_0_PARTS_GT1(TRUE, x1, x0) → 997_0_PARTS_GT(x0, x0)
R rules:
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT(<=(x0, 0), x1, x0)
Cond_997_0_parts_GT(TRUE, x1, x0) → 1004_0_parts_Return(x1)
1055_1_parts_InvokeMethod(1689_0_parts_Return(x0, x0), x2, x0) → 1689_0_parts_Return(x0, x2)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2, x1) → 1689_0_parts_Return(x1, x2)
1786_1_parts_InvokeMethod(1689_0_parts_Return(x0, x1), x0, x1) → 3772_0_parts_Return(+(x3, x2))
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0), x0, 0) → 3772_0_parts_Return(arith[1])
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2, x3) → 3772_0_parts_Return(+(x1, x0))

(7) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT(x0 <= 0, x1, x0)
Cond_997_0_parts_GT(TRUE, x1, x0) → 1004_0_parts_Return(x1)
1055_1_parts_InvokeMethod(1689_0_parts_Return(x0, x0), x2, x0) → 1689_0_parts_Return(x0, x2)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2, x1) → 1689_0_parts_Return(x1, x2)
1786_1_parts_InvokeMethod(1689_0_parts_Return(x0, x1), x0, x1) → 3772_0_parts_Return(x3 + x2)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0), x0, 0) → 3772_0_parts_Return(arith[1])
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2, x3) → 3772_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(0): 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0, x1[0], x0[0])
(1): COND_997_0_PARTS_GT(TRUE, x1[1], x0[1]) → 1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], x0[1] - x1[1]), x0[1], x0[1] - x1[1], x1[1])
(2): COND_997_0_PARTS_GT(TRUE, x1[2], x0[2]) → 997_0_PARTS_GT(x1[2], x0[2] - x1[2])
(3): 1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_1063_1_PARTS_INVOKEMETHOD(x1[3] > 0, 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])
(4): COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 997_0_PARTS_GT(x1[4] - 1, x3[4])
(5): 1063_1_PARTS_INVOKEMETHOD(1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]) → COND_1063_1_PARTS_INVOKEMETHOD1(x1[5] > 0, 1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])
(6): COND_1063_1_PARTS_INVOKEMETHOD1(TRUE, 1689_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6]) → 997_0_PARTS_GT(x1[6] - 1, x3[6])
(7): 1063_1_PARTS_INVOKEMETHOD(3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7]) → COND_1063_1_PARTS_INVOKEMETHOD3(x2[7] > 0, 3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])
(8): COND_1063_1_PARTS_INVOKEMETHOD3(TRUE, 3772_0_parts_Return(x0[8]), x1[8], x3[8], x2[8]) → 997_0_PARTS_GT(x2[8] - 1, x1[8])
(9): 997_0_PARTS_GT(x1[9], x0[9]) → COND_997_0_PARTS_GT1(x1[9] > x0[9] && x1[9] > 0 && x0[9] > 0, x1[9], x0[9])
(10): COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 997_0_PARTS_GT(x0[10], x0[10])

(0) -> (1), if (x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0x1[0]* x1[1]x0[0]* x0[1])


(0) -> (2), if (x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0x1[0]* x1[2]x0[0]* x0[2])


(1) -> (3), if (997_0_parts_GT(x1[1], x0[1] - x1[1]) →* 1004_0_parts_Return(x1[3])∧x0[1]* x3[3]x0[1] - x1[1]* x0[3]x1[1]* x1[3])


(1) -> (5), if (997_0_parts_GT(x1[1], x0[1] - x1[1]) →* 1689_0_parts_Return(x0[5], x1[5])∧x0[1]* x3[5]x0[1] - x1[1]* x0[5]x1[1]* x1[5])


(1) -> (7), if (997_0_parts_GT(x1[1], x0[1] - x1[1]) →* 3772_0_parts_Return(x0[7])∧x0[1]* x1[7]x0[1] - x1[1]* x3[7]x1[1]* x2[7])


(2) -> (0), if (x1[2]* x1[0]x0[2] - x1[2]* x0[0])


(2) -> (9), if (x1[2]* x1[9]x0[2] - x1[2]* x0[9])


(3) -> (4), if (x1[3] > 01004_0_parts_Return(x1[3]) →* 1004_0_parts_Return(x1[4])∧x3[3]* x3[4]x0[3]* x0[4]x1[3]* x1[4])


(4) -> (0), if (x1[4] - 1* x1[0]x3[4]* x0[0])


(4) -> (9), if (x1[4] - 1* x1[9]x3[4]* x0[9])


(5) -> (6), if (x1[5] > 01689_0_parts_Return(x0[5], x1[5]) →* 1689_0_parts_Return(x0[6], x1[6])∧x3[5]* x3[6]x0[5]* x0[6]x1[5]* x1[6])


(6) -> (0), if (x1[6] - 1* x1[0]x3[6]* x0[0])


(6) -> (9), if (x1[6] - 1* x1[9]x3[6]* x0[9])


(7) -> (8), if (x2[7] > 03772_0_parts_Return(x0[7]) →* 3772_0_parts_Return(x0[8])∧x1[7]* x1[8]x3[7]* x3[8]x2[7]* x2[8])


(8) -> (0), if (x2[8] - 1* x1[0]x1[8]* x0[0])


(8) -> (9), if (x2[8] - 1* x1[9]x1[8]* x0[9])


(9) -> (10), if (x1[9] > x0[9] && x1[9] > 0 && x0[9] > 0x1[9]* x1[10]x0[9]* x0[10])


(10) -> (0), if (x0[10]* x1[0]x0[10]* x0[0])


(10) -> (9), if (x0[10]* x1[9]x0[10]* x0[9])



The set Q consists of the following terms:
997_0_parts_GT(x0, x1)
Cond_997_0_parts_GT(TRUE, x0, x1)
1055_1_parts_InvokeMethod(1689_0_parts_Return(x0, x0), x1, x0)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
1786_1_parts_InvokeMethod(1689_0_parts_Return(x0, x1), x0, x1)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0), x0, 0)
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)

(8) IDPNonInfProof (SOUND transformation)

Used the following options for this NonInfProof:
IDPGPoloSolver: Range: [(-1,2)] IsNat: true Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpDefaultShapeHeuristic@4ab50848 Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 1 Max Right Steps: 1

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 997_0_PARTS_GT(x1, x0) → COND_997_0_PARTS_GT(&&(&&(>(x1, 0), <=(x1, x0)), >(x0, 0)), x1, x0) the following chains were created:
  • We consider the chain 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_997_0_PARTS_GT(TRUE, x1[1], x0[1]) → 1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1]) which results in the following constraint:

    (1)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[1]x0[0]=x0[1]997_0_PARTS_GT(x1[0], x0[0])≥NonInfC∧997_0_PARTS_GT(x1[0], x0[0])≥COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])∧(UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥))



    We simplified constraint (1) using rule (IV) which results in the following new constraint:

    (2)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUE997_0_PARTS_GT(x1[0], x0[0])≥NonInfC∧997_0_PARTS_GT(x1[0], x0[0])≥COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])∧(UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (0 ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)bni_57 + (-1)Bound*bni_57] ≥ 0∧[(-1)bso_58] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (0 ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)bni_57 + (-1)Bound*bni_57] ≥ 0∧[(-1)bso_58] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (0 ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)bni_57 + (-1)Bound*bni_57] ≥ 0∧[(-1)bso_58] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (0 ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_57 + (-1)Bound*bni_57] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_58] ≥ 0)



  • We consider the chain 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_997_0_PARTS_GT(TRUE, x1[2], x0[2]) → 997_0_PARTS_GT(x1[2], -(x0[2], x1[2])) which results in the following constraint:

    (7)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[2]x0[0]=x0[2]997_0_PARTS_GT(x1[0], x0[0])≥NonInfC∧997_0_PARTS_GT(x1[0], x0[0])≥COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])∧(UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥))



    We simplified constraint (7) using rule (IV) which results in the following new constraint:

    (8)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUE997_0_PARTS_GT(x1[0], x0[0])≥NonInfC∧997_0_PARTS_GT(x1[0], x0[0])≥COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])∧(UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥))



    We simplified constraint (8) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (9)    (0 ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)bni_57 + (-1)Bound*bni_57] ≥ 0∧[(-1)bso_58] ≥ 0)



    We simplified constraint (9) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (10)    (0 ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)bni_57 + (-1)Bound*bni_57] ≥ 0∧[(-1)bso_58] ≥ 0)



    We simplified constraint (10) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (11)    (0 ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)bni_57 + (-1)Bound*bni_57] ≥ 0∧[(-1)bso_58] ≥ 0)



    We simplified constraint (11) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (12)    (0 ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_57 + (-1)Bound*bni_57] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_58] ≥ 0)







For Pair COND_997_0_PARTS_GT(TRUE, x1, x0) → 1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1, -(x0, x1)), x0, -(x0, x1), x1) the following chains were created:
  • We consider the chain 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_997_0_PARTS_GT(TRUE, x1[1], x0[1]) → 1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1]), 1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) which results in the following constraint:

    (13)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[1]x0[0]=x0[1]997_0_parts_GT(x1[1], -(x0[1], x1[1]))=1004_0_parts_Return(x1[3])∧x0[1]=x3[3]-(x0[1], x1[1])=x0[3]x1[1]=x1[3]COND_997_0_PARTS_GT(TRUE, x1[1], x0[1])≥NonInfC∧COND_997_0_PARTS_GT(TRUE, x1[1], x0[1])≥1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])∧(UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥))



    We simplified constraint (13) using rules (III), (IV), (REWRITING) which results in the following new constraint:

    (14)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUECond_997_0_parts_GT(<=(-(x0[0], x1[0]), 0), x1[0], -(x0[0], x1[0]))=1004_0_parts_Return(x1[0]) ⇒ COND_997_0_PARTS_GT(TRUE, x1[0], x0[0])≥NonInfC∧COND_997_0_PARTS_GT(TRUE, x1[0], x0[0])≥1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[0], -(x0[0], x1[0])), x0[0], -(x0[0], x1[0]), x1[0])∧(UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥))



    We simplified constraint (14) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (15)    (0 ≥ 0 ⇒ (UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧[(-1)bso_60] ≥ 0)



    We simplified constraint (15) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (16)    (0 ≥ 0 ⇒ (UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧[(-1)bso_60] ≥ 0)



    We simplified constraint (16) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (17)    (0 ≥ 0 ⇒ (UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧[(-1)bso_60] ≥ 0)



    We simplified constraint (17) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (18)    (0 ≥ 0 ⇒ (UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_60] ≥ 0)



  • We consider the chain 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_997_0_PARTS_GT(TRUE, x1[1], x0[1]) → 1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1]), 1063_1_PARTS_INVOKEMETHOD(1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]) → COND_1063_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]) which results in the following constraint:

    (19)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[1]x0[0]=x0[1]997_0_parts_GT(x1[1], -(x0[1], x1[1]))=1689_0_parts_Return(x0[5], x1[5])∧x0[1]=x3[5]-(x0[1], x1[1])=x0[5]x1[1]=x1[5]COND_997_0_PARTS_GT(TRUE, x1[1], x0[1])≥NonInfC∧COND_997_0_PARTS_GT(TRUE, x1[1], x0[1])≥1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])∧(UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥))



    We simplified constraint (19) using rules (III), (IV), (REWRITING) which results in the following new constraint:

    (20)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUECond_997_0_parts_GT(<=(-(x0[0], x1[0]), 0), x1[0], -(x0[0], x1[0]))=1689_0_parts_Return(-(x0[0], x1[0]), x1[0]) ⇒ COND_997_0_PARTS_GT(TRUE, x1[0], x0[0])≥NonInfC∧COND_997_0_PARTS_GT(TRUE, x1[0], x0[0])≥1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[0], -(x0[0], x1[0])), x0[0], -(x0[0], x1[0]), x1[0])∧(UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥))



    We simplified constraint (20) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (21)    (0 ≥ 0 ⇒ (UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧[(-1)bso_60] ≥ 0)



    We simplified constraint (21) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (22)    (0 ≥ 0 ⇒ (UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧[(-1)bso_60] ≥ 0)



    We simplified constraint (22) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (23)    (0 ≥ 0 ⇒ (UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧[(-1)bso_60] ≥ 0)



    We simplified constraint (23) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (24)    (0 ≥ 0 ⇒ (UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_60] ≥ 0)



  • We consider the chain 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_997_0_PARTS_GT(TRUE, x1[1], x0[1]) → 1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1]), 1063_1_PARTS_INVOKEMETHOD(3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7]) → COND_1063_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7]) which results in the following constraint:

    (25)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[1]x0[0]=x0[1]997_0_parts_GT(x1[1], -(x0[1], x1[1]))=3772_0_parts_Return(x0[7])∧x0[1]=x1[7]-(x0[1], x1[1])=x3[7]x1[1]=x2[7]COND_997_0_PARTS_GT(TRUE, x1[1], x0[1])≥NonInfC∧COND_997_0_PARTS_GT(TRUE, x1[1], x0[1])≥1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])∧(UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥))



    We simplified constraint (25) using rules (III), (IV), (REWRITING) which results in the following new constraint:

    (26)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUECond_997_0_parts_GT(<=(-(x0[0], x1[0]), 0), x1[0], -(x0[0], x1[0]))=3772_0_parts_Return(x0[7]) ⇒ COND_997_0_PARTS_GT(TRUE, x1[0], x0[0])≥NonInfC∧COND_997_0_PARTS_GT(TRUE, x1[0], x0[0])≥1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[0], -(x0[0], x1[0])), x0[0], -(x0[0], x1[0]), x1[0])∧(UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥))



    We simplified constraint (26) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (27)    (0 ≥ 0 ⇒ (UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧[(-1)bso_60] ≥ 0)



    We simplified constraint (27) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (28)    (0 ≥ 0 ⇒ (UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧[(-1)bso_60] ≥ 0)



    We simplified constraint (28) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (29)    (0 ≥ 0 ⇒ (UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧[(-1)bso_60] ≥ 0)



    We simplified constraint (29) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (30)    (0 ≥ 0 ⇒ (UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_60] ≥ 0)







For Pair COND_997_0_PARTS_GT(TRUE, x1, x0) → 997_0_PARTS_GT(x1, -(x0, x1)) the following chains were created:
  • We consider the chain 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_997_0_PARTS_GT(TRUE, x1[2], x0[2]) → 997_0_PARTS_GT(x1[2], -(x0[2], x1[2])), 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]) which results in the following constraint:

    (31)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[2]x0[0]=x0[2]x1[2]=x1[0]1-(x0[2], x1[2])=x0[0]1COND_997_0_PARTS_GT(TRUE, x1[2], x0[2])≥NonInfC∧COND_997_0_PARTS_GT(TRUE, x1[2], x0[2])≥997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))∧(UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥))



    We simplified constraint (31) using rules (III), (IV) which results in the following new constraint:

    (32)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUECOND_997_0_PARTS_GT(TRUE, x1[0], x0[0])≥NonInfC∧COND_997_0_PARTS_GT(TRUE, x1[0], x0[0])≥997_0_PARTS_GT(x1[0], -(x0[0], x1[0]))∧(UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥))



    We simplified constraint (32) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (33)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)bni_61 + (-1)Bound*bni_61] ≥ 0∧[(-1)bso_62] ≥ 0)



    We simplified constraint (33) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (34)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)bni_61 + (-1)Bound*bni_61] ≥ 0∧[(-1)bso_62] ≥ 0)



    We simplified constraint (34) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (35)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)bni_61 + (-1)Bound*bni_61] ≥ 0∧[(-1)bso_62] ≥ 0)



    We simplified constraint (35) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (36)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_61 + (-1)Bound*bni_61] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_62] ≥ 0)



  • We consider the chain 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_997_0_PARTS_GT(TRUE, x1[2], x0[2]) → 997_0_PARTS_GT(x1[2], -(x0[2], x1[2])), 997_0_PARTS_GT(x1[9], x0[9]) → COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]) which results in the following constraint:

    (37)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[2]x0[0]=x0[2]x1[2]=x1[9]-(x0[2], x1[2])=x0[9]COND_997_0_PARTS_GT(TRUE, x1[2], x0[2])≥NonInfC∧COND_997_0_PARTS_GT(TRUE, x1[2], x0[2])≥997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))∧(UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥))



    We simplified constraint (37) using rules (III), (IV) which results in the following new constraint:

    (38)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUECOND_997_0_PARTS_GT(TRUE, x1[0], x0[0])≥NonInfC∧COND_997_0_PARTS_GT(TRUE, x1[0], x0[0])≥997_0_PARTS_GT(x1[0], -(x0[0], x1[0]))∧(UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥))



    We simplified constraint (38) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (39)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)bni_61 + (-1)Bound*bni_61] ≥ 0∧[(-1)bso_62] ≥ 0)



    We simplified constraint (39) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (40)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)bni_61 + (-1)Bound*bni_61] ≥ 0∧[(-1)bso_62] ≥ 0)



    We simplified constraint (40) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (41)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)bni_61 + (-1)Bound*bni_61] ≥ 0∧[(-1)bso_62] ≥ 0)



    We simplified constraint (41) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (42)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_61 + (-1)Bound*bni_61] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_62] ≥ 0)







For Pair 1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1), x3, x0, x1) → COND_1063_1_PARTS_INVOKEMETHOD(>(x1, 0), 1004_0_parts_Return(x1), x3, x0, x1) the following chains were created:
  • We consider the chain 1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]), COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 997_0_PARTS_GT(-(x1[4], 1), x3[4]) which results in the following constraint:

    (43)    (>(x1[3], 0)=TRUE1004_0_parts_Return(x1[3])=1004_0_parts_Return(x1[4])∧x3[3]=x3[4]x0[3]=x0[4]x1[3]=x1[4]1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥NonInfC∧1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])∧(UIncreasing(COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥))



    We simplified constraint (43) using rules (I), (II), (IV) which results in the following new constraint:

    (44)    (>(x1[3], 0)=TRUE1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥NonInfC∧1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])∧(UIncreasing(COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥))



    We simplified constraint (44) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (45)    (0 ≥ 0 ⇒ (UIncreasing(COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧[(-1)bni_63 + (-1)Bound*bni_63] + [bni_63]x0[3] ≥ 0∧[(-1)bso_64] + x0[3] ≥ 0)



    We simplified constraint (45) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (46)    (0 ≥ 0 ⇒ (UIncreasing(COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧[(-1)bni_63 + (-1)Bound*bni_63] + [bni_63]x0[3] ≥ 0∧[(-1)bso_64] + x0[3] ≥ 0)



    We simplified constraint (46) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (47)    (0 ≥ 0 ⇒ (UIncreasing(COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧[(-1)bni_63 + (-1)Bound*bni_63] + [bni_63]x0[3] ≥ 0∧[(-1)bso_64] + x0[3] ≥ 0)



    We simplified constraint (47) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (48)    (0 ≥ 0 ⇒ (UIncreasing(COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧0 ≥ 0∧[bni_63] ≥ 0∧0 ≥ 0∧[(-1)bni_63 + (-1)Bound*bni_63] ≥ 0∧0 ≥ 0∧[1] ≥ 0∧0 ≥ 0∧[(-1)bso_64] ≥ 0)







For Pair COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1), x3, x0, x1) → 997_0_PARTS_GT(-(x1, 1), x3) the following chains were created:
  • We consider the chain 1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]), COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 997_0_PARTS_GT(-(x1[4], 1), x3[4]), 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]) which results in the following constraint:

    (49)    (>(x1[3], 0)=TRUE1004_0_parts_Return(x1[3])=1004_0_parts_Return(x1[4])∧x3[3]=x3[4]x0[3]=x0[4]x1[3]=x1[4]-(x1[4], 1)=x1[0]x3[4]=x0[0]COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[4]), x3[4], x0[4], x1[4])≥NonInfC∧COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[4]), x3[4], x0[4], x1[4])≥997_0_PARTS_GT(-(x1[4], 1), x3[4])∧(UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥))



    We simplified constraint (49) using rules (I), (II), (III), (IV) which results in the following new constraint:

    (50)    (>(x1[3], 0)=TRUECOND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥NonInfC∧COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥997_0_PARTS_GT(-(x1[3], 1), x3[3])∧(UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥))



    We simplified constraint (50) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (51)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-1)bni_65 + (-1)Bound*bni_65] ≥ 0∧[(-1)bso_66] ≥ 0)



    We simplified constraint (51) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (52)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-1)bni_65 + (-1)Bound*bni_65] ≥ 0∧[(-1)bso_66] ≥ 0)



    We simplified constraint (52) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (53)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-1)bni_65 + (-1)Bound*bni_65] ≥ 0∧[(-1)bso_66] ≥ 0)



    We simplified constraint (53) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (54)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_65 + (-1)Bound*bni_65] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_66] ≥ 0)



  • We consider the chain 1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]), COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 997_0_PARTS_GT(-(x1[4], 1), x3[4]), 997_0_PARTS_GT(x1[9], x0[9]) → COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]) which results in the following constraint:

    (55)    (>(x1[3], 0)=TRUE1004_0_parts_Return(x1[3])=1004_0_parts_Return(x1[4])∧x3[3]=x3[4]x0[3]=x0[4]x1[3]=x1[4]-(x1[4], 1)=x1[9]x3[4]=x0[9]COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[4]), x3[4], x0[4], x1[4])≥NonInfC∧COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[4]), x3[4], x0[4], x1[4])≥997_0_PARTS_GT(-(x1[4], 1), x3[4])∧(UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥))



    We simplified constraint (55) using rules (I), (II), (III), (IV) which results in the following new constraint:

    (56)    (>(x1[3], 0)=TRUECOND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥NonInfC∧COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥997_0_PARTS_GT(-(x1[3], 1), x3[3])∧(UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥))



    We simplified constraint (56) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (57)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-1)bni_65 + (-1)Bound*bni_65] ≥ 0∧[(-1)bso_66] ≥ 0)



    We simplified constraint (57) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (58)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-1)bni_65 + (-1)Bound*bni_65] ≥ 0∧[(-1)bso_66] ≥ 0)



    We simplified constraint (58) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (59)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-1)bni_65 + (-1)Bound*bni_65] ≥ 0∧[(-1)bso_66] ≥ 0)



    We simplified constraint (59) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (60)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_65 + (-1)Bound*bni_65] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_66] ≥ 0)







For Pair 1063_1_PARTS_INVOKEMETHOD(1689_0_parts_Return(x0, x1), x3, x0, x1) → COND_1063_1_PARTS_INVOKEMETHOD1(>(x1, 0), 1689_0_parts_Return(x0, x1), x3, x0, x1) the following chains were created:
  • We consider the chain 1063_1_PARTS_INVOKEMETHOD(1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]) → COND_1063_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]), COND_1063_1_PARTS_INVOKEMETHOD1(TRUE, 1689_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6]) → 997_0_PARTS_GT(-(x1[6], 1), x3[6]) which results in the following constraint:

    (61)    (>(x1[5], 0)=TRUE1689_0_parts_Return(x0[5], x1[5])=1689_0_parts_Return(x0[6], x1[6])∧x3[5]=x3[6]x0[5]=x0[6]x1[5]=x1[6]1063_1_PARTS_INVOKEMETHOD(1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])≥NonInfC∧1063_1_PARTS_INVOKEMETHOD(1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])≥COND_1063_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])∧(UIncreasing(COND_1063_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])), ≥))



    We simplified constraint (61) using rules (I), (II), (IV) which results in the following new constraint:

    (62)    (>(x1[5], 0)=TRUE1063_1_PARTS_INVOKEMETHOD(1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])≥NonInfC∧1063_1_PARTS_INVOKEMETHOD(1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])≥COND_1063_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])∧(UIncreasing(COND_1063_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])), ≥))



    We simplified constraint (62) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (63)    (0 ≥ 0 ⇒ (UIncreasing(COND_1063_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])), ≥)∧[(2)bni_67 + (-1)Bound*bni_67] + [bni_67]x1[5] + [bni_67]x0[5] ≥ 0∧[3 + (-1)bso_68] + x1[5] ≥ 0)



    We simplified constraint (63) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (64)    (0 ≥ 0 ⇒ (UIncreasing(COND_1063_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])), ≥)∧[(2)bni_67 + (-1)Bound*bni_67] + [bni_67]x1[5] + [bni_67]x0[5] ≥ 0∧[3 + (-1)bso_68] + x1[5] ≥ 0)



    We simplified constraint (64) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (65)    (0 ≥ 0 ⇒ (UIncreasing(COND_1063_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])), ≥)∧[(2)bni_67 + (-1)Bound*bni_67] + [bni_67]x1[5] + [bni_67]x0[5] ≥ 0∧[3 + (-1)bso_68] + x1[5] ≥ 0)



    We simplified constraint (65) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (66)    (0 ≥ 0 ⇒ (UIncreasing(COND_1063_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])), ≥)∧[bni_67] ≥ 0∧[bni_67] ≥ 0∧0 ≥ 0∧[(2)bni_67 + (-1)Bound*bni_67] ≥ 0∧[1] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[3 + (-1)bso_68] ≥ 0)







For Pair COND_1063_1_PARTS_INVOKEMETHOD1(TRUE, 1689_0_parts_Return(x0, x1), x3, x0, x1) → 997_0_PARTS_GT(-(x1, 1), x3) the following chains were created:
  • We consider the chain 1063_1_PARTS_INVOKEMETHOD(1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]) → COND_1063_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]), COND_1063_1_PARTS_INVOKEMETHOD1(TRUE, 1689_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6]) → 997_0_PARTS_GT(-(x1[6], 1), x3[6]), 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]) which results in the following constraint:

    (67)    (>(x1[5], 0)=TRUE1689_0_parts_Return(x0[5], x1[5])=1689_0_parts_Return(x0[6], x1[6])∧x3[5]=x3[6]x0[5]=x0[6]x1[5]=x1[6]-(x1[6], 1)=x1[0]x3[6]=x0[0]COND_1063_1_PARTS_INVOKEMETHOD1(TRUE, 1689_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6])≥NonInfC∧COND_1063_1_PARTS_INVOKEMETHOD1(TRUE, 1689_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6])≥997_0_PARTS_GT(-(x1[6], 1), x3[6])∧(UIncreasing(997_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥))



    We simplified constraint (67) using rules (I), (II), (III), (IV) which results in the following new constraint:

    (68)    (>(x1[5], 0)=TRUECOND_1063_1_PARTS_INVOKEMETHOD1(TRUE, 1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])≥NonInfC∧COND_1063_1_PARTS_INVOKEMETHOD1(TRUE, 1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])≥997_0_PARTS_GT(-(x1[5], 1), x3[5])∧(UIncreasing(997_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥))



    We simplified constraint (68) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (69)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧[(-1)bni_69 + (-1)Bound*bni_69] + [bni_69]x0[5] ≥ 0∧[(-1)bso_70] + x0[5] ≥ 0)



    We simplified constraint (69) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (70)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧[(-1)bni_69 + (-1)Bound*bni_69] + [bni_69]x0[5] ≥ 0∧[(-1)bso_70] + x0[5] ≥ 0)



    We simplified constraint (70) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (71)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧[(-1)bni_69 + (-1)Bound*bni_69] + [bni_69]x0[5] ≥ 0∧[(-1)bso_70] + x0[5] ≥ 0)



    We simplified constraint (71) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (72)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧0 ≥ 0∧[bni_69] ≥ 0∧0 ≥ 0∧[(-1)bni_69 + (-1)Bound*bni_69] ≥ 0∧0 ≥ 0∧[1] ≥ 0∧0 ≥ 0∧[(-1)bso_70] ≥ 0)



  • We consider the chain 1063_1_PARTS_INVOKEMETHOD(1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]) → COND_1063_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]), COND_1063_1_PARTS_INVOKEMETHOD1(TRUE, 1689_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6]) → 997_0_PARTS_GT(-(x1[6], 1), x3[6]), 997_0_PARTS_GT(x1[9], x0[9]) → COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]) which results in the following constraint:

    (73)    (>(x1[5], 0)=TRUE1689_0_parts_Return(x0[5], x1[5])=1689_0_parts_Return(x0[6], x1[6])∧x3[5]=x3[6]x0[5]=x0[6]x1[5]=x1[6]-(x1[6], 1)=x1[9]x3[6]=x0[9]COND_1063_1_PARTS_INVOKEMETHOD1(TRUE, 1689_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6])≥NonInfC∧COND_1063_1_PARTS_INVOKEMETHOD1(TRUE, 1689_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6])≥997_0_PARTS_GT(-(x1[6], 1), x3[6])∧(UIncreasing(997_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥))



    We simplified constraint (73) using rules (I), (II), (III), (IV) which results in the following new constraint:

    (74)    (>(x1[5], 0)=TRUECOND_1063_1_PARTS_INVOKEMETHOD1(TRUE, 1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])≥NonInfC∧COND_1063_1_PARTS_INVOKEMETHOD1(TRUE, 1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])≥997_0_PARTS_GT(-(x1[5], 1), x3[5])∧(UIncreasing(997_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥))



    We simplified constraint (74) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (75)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧[(-1)bni_69 + (-1)Bound*bni_69] + [bni_69]x0[5] ≥ 0∧[(-1)bso_70] + x0[5] ≥ 0)



    We simplified constraint (75) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (76)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧[(-1)bni_69 + (-1)Bound*bni_69] + [bni_69]x0[5] ≥ 0∧[(-1)bso_70] + x0[5] ≥ 0)



    We simplified constraint (76) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (77)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧[(-1)bni_69 + (-1)Bound*bni_69] + [bni_69]x0[5] ≥ 0∧[(-1)bso_70] + x0[5] ≥ 0)



    We simplified constraint (77) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (78)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧0 ≥ 0∧[bni_69] ≥ 0∧0 ≥ 0∧[(-1)bni_69 + (-1)Bound*bni_69] ≥ 0∧0 ≥ 0∧[1] ≥ 0∧0 ≥ 0∧[(-1)bso_70] ≥ 0)







For Pair 1063_1_PARTS_INVOKEMETHOD(3772_0_parts_Return(x0), x1, x3, x2) → COND_1063_1_PARTS_INVOKEMETHOD3(>(x2, 0), 3772_0_parts_Return(x0), x1, x3, x2) the following chains were created:
  • We consider the chain 1063_1_PARTS_INVOKEMETHOD(3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7]) → COND_1063_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7]), COND_1063_1_PARTS_INVOKEMETHOD3(TRUE, 3772_0_parts_Return(x0[8]), x1[8], x3[8], x2[8]) → 997_0_PARTS_GT(-(x2[8], 1), x1[8]) which results in the following constraint:

    (79)    (>(x2[7], 0)=TRUE3772_0_parts_Return(x0[7])=3772_0_parts_Return(x0[8])∧x1[7]=x1[8]x3[7]=x3[8]x2[7]=x2[8]1063_1_PARTS_INVOKEMETHOD(3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])≥NonInfC∧1063_1_PARTS_INVOKEMETHOD(3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])≥COND_1063_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])∧(UIncreasing(COND_1063_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])), ≥))



    We simplified constraint (79) using rules (I), (II), (IV) which results in the following new constraint:

    (80)    (>(x2[7], 0)=TRUE1063_1_PARTS_INVOKEMETHOD(3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])≥NonInfC∧1063_1_PARTS_INVOKEMETHOD(3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])≥COND_1063_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])∧(UIncreasing(COND_1063_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])), ≥))



    We simplified constraint (80) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (81)    (0 ≥ 0 ⇒ (UIncreasing(COND_1063_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])), ≥)∧[(2)bni_71 + (-1)Bound*bni_71] + [bni_71]x2[7] + [bni_71]x3[7] ≥ 0∧[3 + (-1)bso_72] + x3[7] ≥ 0)



    We simplified constraint (81) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (82)    (0 ≥ 0 ⇒ (UIncreasing(COND_1063_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])), ≥)∧[(2)bni_71 + (-1)Bound*bni_71] + [bni_71]x2[7] + [bni_71]x3[7] ≥ 0∧[3 + (-1)bso_72] + x3[7] ≥ 0)



    We simplified constraint (82) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (83)    (0 ≥ 0 ⇒ (UIncreasing(COND_1063_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])), ≥)∧[(2)bni_71 + (-1)Bound*bni_71] + [bni_71]x2[7] + [bni_71]x3[7] ≥ 0∧[3 + (-1)bso_72] + x3[7] ≥ 0)



    We simplified constraint (83) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (84)    (0 ≥ 0 ⇒ (UIncreasing(COND_1063_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])), ≥)∧[bni_71] ≥ 0∧[bni_71] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(2)bni_71 + (-1)Bound*bni_71] ≥ 0∧0 ≥ 0∧[1] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[3 + (-1)bso_72] ≥ 0)







For Pair COND_1063_1_PARTS_INVOKEMETHOD3(TRUE, 3772_0_parts_Return(x0), x1, x3, x2) → 997_0_PARTS_GT(-(x2, 1), x1) the following chains were created:
  • We consider the chain 1063_1_PARTS_INVOKEMETHOD(3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7]) → COND_1063_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7]), COND_1063_1_PARTS_INVOKEMETHOD3(TRUE, 3772_0_parts_Return(x0[8]), x1[8], x3[8], x2[8]) → 997_0_PARTS_GT(-(x2[8], 1), x1[8]), 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]) which results in the following constraint:

    (85)    (>(x2[7], 0)=TRUE3772_0_parts_Return(x0[7])=3772_0_parts_Return(x0[8])∧x1[7]=x1[8]x3[7]=x3[8]x2[7]=x2[8]-(x2[8], 1)=x1[0]x1[8]=x0[0]COND_1063_1_PARTS_INVOKEMETHOD3(TRUE, 3772_0_parts_Return(x0[8]), x1[8], x3[8], x2[8])≥NonInfC∧COND_1063_1_PARTS_INVOKEMETHOD3(TRUE, 3772_0_parts_Return(x0[8]), x1[8], x3[8], x2[8])≥997_0_PARTS_GT(-(x2[8], 1), x1[8])∧(UIncreasing(997_0_PARTS_GT(-(x2[8], 1), x1[8])), ≥))



    We simplified constraint (85) using rules (I), (II), (III), (IV) which results in the following new constraint:

    (86)    (>(x2[7], 0)=TRUECOND_1063_1_PARTS_INVOKEMETHOD3(TRUE, 3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])≥NonInfC∧COND_1063_1_PARTS_INVOKEMETHOD3(TRUE, 3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])≥997_0_PARTS_GT(-(x2[7], 1), x1[7])∧(UIncreasing(997_0_PARTS_GT(-(x2[8], 1), x1[8])), ≥))



    We simplified constraint (86) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (87)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x2[8], 1), x1[8])), ≥)∧[(-1)bni_73 + (-1)Bound*bni_73] + [bni_73]x2[7] ≥ 0∧[(-1)bso_74] + x2[7] ≥ 0)



    We simplified constraint (87) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (88)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x2[8], 1), x1[8])), ≥)∧[(-1)bni_73 + (-1)Bound*bni_73] + [bni_73]x2[7] ≥ 0∧[(-1)bso_74] + x2[7] ≥ 0)



    We simplified constraint (88) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (89)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x2[8], 1), x1[8])), ≥)∧[(-1)bni_73 + (-1)Bound*bni_73] + [bni_73]x2[7] ≥ 0∧[(-1)bso_74] + x2[7] ≥ 0)



    We simplified constraint (89) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (90)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x2[8], 1), x1[8])), ≥)∧[bni_73] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_73 + (-1)Bound*bni_73] ≥ 0∧[1] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_74] ≥ 0)



  • We consider the chain 1063_1_PARTS_INVOKEMETHOD(3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7]) → COND_1063_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7]), COND_1063_1_PARTS_INVOKEMETHOD3(TRUE, 3772_0_parts_Return(x0[8]), x1[8], x3[8], x2[8]) → 997_0_PARTS_GT(-(x2[8], 1), x1[8]), 997_0_PARTS_GT(x1[9], x0[9]) → COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]) which results in the following constraint:

    (91)    (>(x2[7], 0)=TRUE3772_0_parts_Return(x0[7])=3772_0_parts_Return(x0[8])∧x1[7]=x1[8]x3[7]=x3[8]x2[7]=x2[8]-(x2[8], 1)=x1[9]x1[8]=x0[9]COND_1063_1_PARTS_INVOKEMETHOD3(TRUE, 3772_0_parts_Return(x0[8]), x1[8], x3[8], x2[8])≥NonInfC∧COND_1063_1_PARTS_INVOKEMETHOD3(TRUE, 3772_0_parts_Return(x0[8]), x1[8], x3[8], x2[8])≥997_0_PARTS_GT(-(x2[8], 1), x1[8])∧(UIncreasing(997_0_PARTS_GT(-(x2[8], 1), x1[8])), ≥))



    We simplified constraint (91) using rules (I), (II), (III), (IV) which results in the following new constraint:

    (92)    (>(x2[7], 0)=TRUECOND_1063_1_PARTS_INVOKEMETHOD3(TRUE, 3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])≥NonInfC∧COND_1063_1_PARTS_INVOKEMETHOD3(TRUE, 3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])≥997_0_PARTS_GT(-(x2[7], 1), x1[7])∧(UIncreasing(997_0_PARTS_GT(-(x2[8], 1), x1[8])), ≥))



    We simplified constraint (92) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (93)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x2[8], 1), x1[8])), ≥)∧[(-1)bni_73 + (-1)Bound*bni_73] + [bni_73]x2[7] ≥ 0∧[(-1)bso_74] + x2[7] ≥ 0)



    We simplified constraint (93) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (94)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x2[8], 1), x1[8])), ≥)∧[(-1)bni_73 + (-1)Bound*bni_73] + [bni_73]x2[7] ≥ 0∧[(-1)bso_74] + x2[7] ≥ 0)



    We simplified constraint (94) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (95)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x2[8], 1), x1[8])), ≥)∧[(-1)bni_73 + (-1)Bound*bni_73] + [bni_73]x2[7] ≥ 0∧[(-1)bso_74] + x2[7] ≥ 0)



    We simplified constraint (95) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (96)    (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x2[8], 1), x1[8])), ≥)∧[bni_73] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_73 + (-1)Bound*bni_73] ≥ 0∧[1] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_74] ≥ 0)







For Pair 997_0_PARTS_GT(x1, x0) → COND_997_0_PARTS_GT1(&&(&&(>(x1, x0), >(x1, 0)), >(x0, 0)), x1, x0) the following chains were created:
  • We consider the chain 997_0_PARTS_GT(x1[9], x0[9]) → COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]), COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 997_0_PARTS_GT(x0[10], x0[10]) which results in the following constraint:

    (97)    (&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0))=TRUEx1[9]=x1[10]x0[9]=x0[10]997_0_PARTS_GT(x1[9], x0[9])≥NonInfC∧997_0_PARTS_GT(x1[9], x0[9])≥COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])∧(UIncreasing(COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥))



    We simplified constraint (97) using rule (IV) which results in the following new constraint:

    (98)    (&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0))=TRUE997_0_PARTS_GT(x1[9], x0[9])≥NonInfC∧997_0_PARTS_GT(x1[9], x0[9])≥COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])∧(UIncreasing(COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥))



    We simplified constraint (98) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (99)    (0 ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧[(-1)bni_75 + (-1)Bound*bni_75] ≥ 0∧[(-1)bso_76] ≥ 0)



    We simplified constraint (99) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (100)    (0 ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧[(-1)bni_75 + (-1)Bound*bni_75] ≥ 0∧[(-1)bso_76] ≥ 0)



    We simplified constraint (100) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (101)    (0 ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧[(-1)bni_75 + (-1)Bound*bni_75] ≥ 0∧[(-1)bso_76] ≥ 0)



    We simplified constraint (101) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (102)    (0 ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_75 + (-1)Bound*bni_75] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_76] ≥ 0)







For Pair COND_997_0_PARTS_GT1(TRUE, x1, x0) → 997_0_PARTS_GT(x0, x0) the following chains were created:
  • We consider the chain COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 997_0_PARTS_GT(x0[10], x0[10]), 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]) which results in the following constraint:

    (103)    (x0[10]=x1[0]x0[10]=x0[0]COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10])≥NonInfC∧COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10])≥997_0_PARTS_GT(x0[10], x0[10])∧(UIncreasing(997_0_PARTS_GT(x0[10], x0[10])), ≥))



    We simplified constraint (103) using rule (IV) which results in the following new constraint:

    (104)    (COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10])≥NonInfC∧COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10])≥997_0_PARTS_GT(x0[10], x0[10])∧(UIncreasing(997_0_PARTS_GT(x0[10], x0[10])), ≥))



    We simplified constraint (104) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (105)    ((UIncreasing(997_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_77] = 0∧[(-1)bso_78] ≥ 0)



    We simplified constraint (105) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (106)    ((UIncreasing(997_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_77] = 0∧[(-1)bso_78] ≥ 0)



    We simplified constraint (106) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (107)    ((UIncreasing(997_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_77] = 0∧[(-1)bso_78] ≥ 0)



    We simplified constraint (107) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (108)    ((UIncreasing(997_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_77] = 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_78] ≥ 0)



  • We consider the chain COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 997_0_PARTS_GT(x0[10], x0[10]), 997_0_PARTS_GT(x1[9], x0[9]) → COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]) which results in the following constraint:

    (109)    (x0[10]=x1[9]x0[10]=x0[9]COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10])≥NonInfC∧COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10])≥997_0_PARTS_GT(x0[10], x0[10])∧(UIncreasing(997_0_PARTS_GT(x0[10], x0[10])), ≥))



    We simplified constraint (109) using rule (IV) which results in the following new constraint:

    (110)    (COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10])≥NonInfC∧COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10])≥997_0_PARTS_GT(x0[10], x0[10])∧(UIncreasing(997_0_PARTS_GT(x0[10], x0[10])), ≥))



    We simplified constraint (110) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (111)    ((UIncreasing(997_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_77] = 0∧[(-1)bso_78] ≥ 0)



    We simplified constraint (111) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (112)    ((UIncreasing(997_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_77] = 0∧[(-1)bso_78] ≥ 0)



    We simplified constraint (112) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (113)    ((UIncreasing(997_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_77] = 0∧[(-1)bso_78] ≥ 0)



    We simplified constraint (113) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (114)    ((UIncreasing(997_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_77] = 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_78] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 997_0_PARTS_GT(x1, x0) → COND_997_0_PARTS_GT(&&(&&(>(x1, 0), <=(x1, x0)), >(x0, 0)), x1, x0)
    • (0 ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_57 + (-1)Bound*bni_57] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_58] ≥ 0)
    • (0 ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_57 + (-1)Bound*bni_57] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_58] ≥ 0)

  • COND_997_0_PARTS_GT(TRUE, x1, x0) → 1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1, -(x0, x1)), x0, -(x0, x1), x1)
    • (0 ≥ 0 ⇒ (UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_60] ≥ 0)
    • (0 ≥ 0 ⇒ (UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_60] ≥ 0)
    • (0 ≥ 0 ⇒ (UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_60] ≥ 0)

  • COND_997_0_PARTS_GT(TRUE, x1, x0) → 997_0_PARTS_GT(x1, -(x0, x1))
    • (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_61 + (-1)Bound*bni_61] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_62] ≥ 0)
    • (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_61 + (-1)Bound*bni_61] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_62] ≥ 0)

  • 1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1), x3, x0, x1) → COND_1063_1_PARTS_INVOKEMETHOD(>(x1, 0), 1004_0_parts_Return(x1), x3, x0, x1)
    • (0 ≥ 0 ⇒ (UIncreasing(COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧0 ≥ 0∧[bni_63] ≥ 0∧0 ≥ 0∧[(-1)bni_63 + (-1)Bound*bni_63] ≥ 0∧0 ≥ 0∧[1] ≥ 0∧0 ≥ 0∧[(-1)bso_64] ≥ 0)

  • COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1), x3, x0, x1) → 997_0_PARTS_GT(-(x1, 1), x3)
    • (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_65 + (-1)Bound*bni_65] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_66] ≥ 0)
    • (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_65 + (-1)Bound*bni_65] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_66] ≥ 0)

  • 1063_1_PARTS_INVOKEMETHOD(1689_0_parts_Return(x0, x1), x3, x0, x1) → COND_1063_1_PARTS_INVOKEMETHOD1(>(x1, 0), 1689_0_parts_Return(x0, x1), x3, x0, x1)
    • (0 ≥ 0 ⇒ (UIncreasing(COND_1063_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])), ≥)∧[bni_67] ≥ 0∧[bni_67] ≥ 0∧0 ≥ 0∧[(2)bni_67 + (-1)Bound*bni_67] ≥ 0∧[1] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[3 + (-1)bso_68] ≥ 0)

  • COND_1063_1_PARTS_INVOKEMETHOD1(TRUE, 1689_0_parts_Return(x0, x1), x3, x0, x1) → 997_0_PARTS_GT(-(x1, 1), x3)
    • (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧0 ≥ 0∧[bni_69] ≥ 0∧0 ≥ 0∧[(-1)bni_69 + (-1)Bound*bni_69] ≥ 0∧0 ≥ 0∧[1] ≥ 0∧0 ≥ 0∧[(-1)bso_70] ≥ 0)
    • (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧0 ≥ 0∧[bni_69] ≥ 0∧0 ≥ 0∧[(-1)bni_69 + (-1)Bound*bni_69] ≥ 0∧0 ≥ 0∧[1] ≥ 0∧0 ≥ 0∧[(-1)bso_70] ≥ 0)

  • 1063_1_PARTS_INVOKEMETHOD(3772_0_parts_Return(x0), x1, x3, x2) → COND_1063_1_PARTS_INVOKEMETHOD3(>(x2, 0), 3772_0_parts_Return(x0), x1, x3, x2)
    • (0 ≥ 0 ⇒ (UIncreasing(COND_1063_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])), ≥)∧[bni_71] ≥ 0∧[bni_71] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(2)bni_71 + (-1)Bound*bni_71] ≥ 0∧0 ≥ 0∧[1] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[3 + (-1)bso_72] ≥ 0)

  • COND_1063_1_PARTS_INVOKEMETHOD3(TRUE, 3772_0_parts_Return(x0), x1, x3, x2) → 997_0_PARTS_GT(-(x2, 1), x1)
    • (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x2[8], 1), x1[8])), ≥)∧[bni_73] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_73 + (-1)Bound*bni_73] ≥ 0∧[1] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_74] ≥ 0)
    • (0 ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x2[8], 1), x1[8])), ≥)∧[bni_73] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_73 + (-1)Bound*bni_73] ≥ 0∧[1] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_74] ≥ 0)

  • 997_0_PARTS_GT(x1, x0) → COND_997_0_PARTS_GT1(&&(&&(>(x1, x0), >(x1, 0)), >(x0, 0)), x1, x0)
    • (0 ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_75 + (-1)Bound*bni_75] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_76] ≥ 0)

  • COND_997_0_PARTS_GT1(TRUE, x1, x0) → 997_0_PARTS_GT(x0, x0)
    • ((UIncreasing(997_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_77] = 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_78] ≥ 0)
    • ((UIncreasing(997_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_77] = 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_78] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers with natural coefficients for non-tuple symbols [NONINF][POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(997_0_parts_GT(x1, x2)) = [3] + x1   
POL(Cond_997_0_parts_GT(x1, x2, x3)) = [3] + x2   
POL(<=(x1, x2)) = 0   
POL(0) = 0   
POL(1004_0_parts_Return(x1)) = [3] + x1   
POL(1055_1_parts_InvokeMethod(x1, x2, x3)) = 0   
POL(1689_0_parts_Return(x1, x2)) = 0   
POL(3772_0_parts_Return(x1)) = 0   
POL(1786_1_parts_InvokeMethod(x1, x2, x3)) = 0   
POL(+(x1, x2)) = 0   
POL(997_0_PARTS_GT(x1, x2)) = [-1]   
POL(COND_997_0_PARTS_GT(x1, x2, x3)) = [-1]   
POL(&&(x1, x2)) = 0   
POL(>(x1, x2)) = 0   
POL(1063_1_PARTS_INVOKEMETHOD(x1, x2, x3, x4)) = [2] + x4 + x3 + [-1]x1   
POL(-(x1, x2)) = 0   
POL(COND_1063_1_PARTS_INVOKEMETHOD(x1, x2, x3, x4, x5)) = [-1]   
POL(1) = 0   
POL(COND_1063_1_PARTS_INVOKEMETHOD1(x1, x2, x3, x4, x5)) = [-1] + x4 + [-1]x2   
POL(COND_1063_1_PARTS_INVOKEMETHOD3(x1, x2, x3, x4, x5)) = [-1] + x5 + [-1]x2   
POL(COND_997_0_PARTS_GT1(x1, x2, x3)) = [-1]   

The following pairs are in P>:

1063_1_PARTS_INVOKEMETHOD(1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]) → COND_1063_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])
1063_1_PARTS_INVOKEMETHOD(3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7]) → COND_1063_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])

The following pairs are in Pbound:

997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])
COND_997_0_PARTS_GT(TRUE, x1[1], x0[1]) → 1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])
COND_997_0_PARTS_GT(TRUE, x1[2], x0[2]) → 997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))
1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])
COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 997_0_PARTS_GT(-(x1[4], 1), x3[4])
1063_1_PARTS_INVOKEMETHOD(1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]) → COND_1063_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1689_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])
COND_1063_1_PARTS_INVOKEMETHOD1(TRUE, 1689_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6]) → 997_0_PARTS_GT(-(x1[6], 1), x3[6])
1063_1_PARTS_INVOKEMETHOD(3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7]) → COND_1063_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 3772_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])
COND_1063_1_PARTS_INVOKEMETHOD3(TRUE, 3772_0_parts_Return(x0[8]), x1[8], x3[8], x2[8]) → 997_0_PARTS_GT(-(x2[8], 1), x1[8])
997_0_PARTS_GT(x1[9], x0[9]) → COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])

The following pairs are in P:

997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])
COND_997_0_PARTS_GT(TRUE, x1[1], x0[1]) → 1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])
COND_997_0_PARTS_GT(TRUE, x1[2], x0[2]) → 997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))
1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])
COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 997_0_PARTS_GT(-(x1[4], 1), x3[4])
COND_1063_1_PARTS_INVOKEMETHOD1(TRUE, 1689_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6]) → 997_0_PARTS_GT(-(x1[6], 1), x3[6])
COND_1063_1_PARTS_INVOKEMETHOD3(TRUE, 3772_0_parts_Return(x0[8]), x1[8], x3[8], x2[8]) → 997_0_PARTS_GT(-(x2[8], 1), x1[8])
997_0_PARTS_GT(x1[9], x0[9]) → COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])
COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 997_0_PARTS_GT(x0[10], x0[10])

At least the following rules have been oriented under context sensitive arithmetic replacement:

997_0_parts_GT(x1, x0)1Cond_997_0_parts_GT(<=(x0, 0), x1, x0)1
Cond_997_0_parts_GT(TRUE, x1, x0)11004_0_parts_Return(x1)1

(9) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT(x0 <= 0, x1, x0)
Cond_997_0_parts_GT(TRUE, x1, x0) → 1004_0_parts_Return(x1)
1055_1_parts_InvokeMethod(1689_0_parts_Return(x0, x0), x2, x0) → 1689_0_parts_Return(x0, x2)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2, x1) → 1689_0_parts_Return(x1, x2)
1786_1_parts_InvokeMethod(1689_0_parts_Return(x0, x1), x0, x1) → 3772_0_parts_Return(x3 + x2)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0), x0, 0) → 3772_0_parts_Return(arith[1])
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2, x3) → 3772_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(0): 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0, x1[0], x0[0])
(1): COND_997_0_PARTS_GT(TRUE, x1[1], x0[1]) → 1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], x0[1] - x1[1]), x0[1], x0[1] - x1[1], x1[1])
(2): COND_997_0_PARTS_GT(TRUE, x1[2], x0[2]) → 997_0_PARTS_GT(x1[2], x0[2] - x1[2])
(3): 1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_1063_1_PARTS_INVOKEMETHOD(x1[3] > 0, 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])
(4): COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 997_0_PARTS_GT(x1[4] - 1, x3[4])
(6): COND_1063_1_PARTS_INVOKEMETHOD1(TRUE, 1689_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6]) → 997_0_PARTS_GT(x1[6] - 1, x3[6])
(8): COND_1063_1_PARTS_INVOKEMETHOD3(TRUE, 3772_0_parts_Return(x0[8]), x1[8], x3[8], x2[8]) → 997_0_PARTS_GT(x2[8] - 1, x1[8])
(9): 997_0_PARTS_GT(x1[9], x0[9]) → COND_997_0_PARTS_GT1(x1[9] > x0[9] && x1[9] > 0 && x0[9] > 0, x1[9], x0[9])
(10): COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 997_0_PARTS_GT(x0[10], x0[10])

(2) -> (0), if (x1[2]* x1[0]x0[2] - x1[2]* x0[0])


(4) -> (0), if (x1[4] - 1* x1[0]x3[4]* x0[0])


(6) -> (0), if (x1[6] - 1* x1[0]x3[6]* x0[0])


(8) -> (0), if (x2[8] - 1* x1[0]x1[8]* x0[0])


(10) -> (0), if (x0[10]* x1[0]x0[10]* x0[0])


(0) -> (1), if (x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0x1[0]* x1[1]x0[0]* x0[1])


(0) -> (2), if (x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0x1[0]* x1[2]x0[0]* x0[2])


(1) -> (3), if (997_0_parts_GT(x1[1], x0[1] - x1[1]) →* 1004_0_parts_Return(x1[3])∧x0[1]* x3[3]x0[1] - x1[1]* x0[3]x1[1]* x1[3])


(3) -> (4), if (x1[3] > 01004_0_parts_Return(x1[3]) →* 1004_0_parts_Return(x1[4])∧x3[3]* x3[4]x0[3]* x0[4]x1[3]* x1[4])


(2) -> (9), if (x1[2]* x1[9]x0[2] - x1[2]* x0[9])


(4) -> (9), if (x1[4] - 1* x1[9]x3[4]* x0[9])


(6) -> (9), if (x1[6] - 1* x1[9]x3[6]* x0[9])


(8) -> (9), if (x2[8] - 1* x1[9]x1[8]* x0[9])


(10) -> (9), if (x0[10]* x1[9]x0[10]* x0[9])


(9) -> (10), if (x1[9] > x0[9] && x1[9] > 0 && x0[9] > 0x1[9]* x1[10]x0[9]* x0[10])



The set Q consists of the following terms:
997_0_parts_GT(x0, x1)
Cond_997_0_parts_GT(TRUE, x0, x1)
1055_1_parts_InvokeMethod(1689_0_parts_Return(x0, x0), x1, x0)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
1786_1_parts_InvokeMethod(1689_0_parts_Return(x0, x1), x0, x1)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0), x0, 0)
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)

(10) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 2 less nodes.

(11) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT(x0 <= 0, x1, x0)
Cond_997_0_parts_GT(TRUE, x1, x0) → 1004_0_parts_Return(x1)
1055_1_parts_InvokeMethod(1689_0_parts_Return(x0, x0), x2, x0) → 1689_0_parts_Return(x0, x2)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2, x1) → 1689_0_parts_Return(x1, x2)
1786_1_parts_InvokeMethod(1689_0_parts_Return(x0, x1), x0, x1) → 3772_0_parts_Return(x3 + x2)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0), x0, 0) → 3772_0_parts_Return(arith[1])
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2, x3) → 3772_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(2): COND_997_0_PARTS_GT(TRUE, x1[2], x0[2]) → 997_0_PARTS_GT(x1[2], x0[2] - x1[2])
(10): COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 997_0_PARTS_GT(x0[10], x0[10])
(9): 997_0_PARTS_GT(x1[9], x0[9]) → COND_997_0_PARTS_GT1(x1[9] > x0[9] && x1[9] > 0 && x0[9] > 0, x1[9], x0[9])
(4): COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 997_0_PARTS_GT(x1[4] - 1, x3[4])
(3): 1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_1063_1_PARTS_INVOKEMETHOD(x1[3] > 0, 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])
(1): COND_997_0_PARTS_GT(TRUE, x1[1], x0[1]) → 1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], x0[1] - x1[1]), x0[1], x0[1] - x1[1], x1[1])
(0): 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0, x1[0], x0[0])

(2) -> (0), if (x1[2]* x1[0]x0[2] - x1[2]* x0[0])


(4) -> (0), if (x1[4] - 1* x1[0]x3[4]* x0[0])


(10) -> (0), if (x0[10]* x1[0]x0[10]* x0[0])


(0) -> (1), if (x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0x1[0]* x1[1]x0[0]* x0[1])


(0) -> (2), if (x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0x1[0]* x1[2]x0[0]* x0[2])


(1) -> (3), if (997_0_parts_GT(x1[1], x0[1] - x1[1]) →* 1004_0_parts_Return(x1[3])∧x0[1]* x3[3]x0[1] - x1[1]* x0[3]x1[1]* x1[3])


(3) -> (4), if (x1[3] > 01004_0_parts_Return(x1[3]) →* 1004_0_parts_Return(x1[4])∧x3[3]* x3[4]x0[3]* x0[4]x1[3]* x1[4])


(2) -> (9), if (x1[2]* x1[9]x0[2] - x1[2]* x0[9])


(4) -> (9), if (x1[4] - 1* x1[9]x3[4]* x0[9])


(10) -> (9), if (x0[10]* x1[9]x0[10]* x0[9])


(9) -> (10), if (x1[9] > x0[9] && x1[9] > 0 && x0[9] > 0x1[9]* x1[10]x0[9]* x0[10])



The set Q consists of the following terms:
997_0_parts_GT(x0, x1)
Cond_997_0_parts_GT(TRUE, x0, x1)
1055_1_parts_InvokeMethod(1689_0_parts_Return(x0, x0), x1, x0)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
1786_1_parts_InvokeMethod(1689_0_parts_Return(x0, x1), x0, x1)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0), x0, 0)
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)

(12) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

(13) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT(x0 <= 0, x1, x0)
Cond_997_0_parts_GT(TRUE, x1, x0) → 1004_0_parts_Return(x1)

The integer pair graph contains the following rules and edges:
(2): COND_997_0_PARTS_GT(TRUE, x1[2], x0[2]) → 997_0_PARTS_GT(x1[2], x0[2] - x1[2])
(10): COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 997_0_PARTS_GT(x0[10], x0[10])
(9): 997_0_PARTS_GT(x1[9], x0[9]) → COND_997_0_PARTS_GT1(x1[9] > x0[9] && x1[9] > 0 && x0[9] > 0, x1[9], x0[9])
(4): COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 997_0_PARTS_GT(x1[4] - 1, x3[4])
(3): 1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_1063_1_PARTS_INVOKEMETHOD(x1[3] > 0, 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])
(1): COND_997_0_PARTS_GT(TRUE, x1[1], x0[1]) → 1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], x0[1] - x1[1]), x0[1], x0[1] - x1[1], x1[1])
(0): 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0, x1[0], x0[0])

(2) -> (0), if (x1[2]* x1[0]x0[2] - x1[2]* x0[0])


(4) -> (0), if (x1[4] - 1* x1[0]x3[4]* x0[0])


(10) -> (0), if (x0[10]* x1[0]x0[10]* x0[0])


(0) -> (1), if (x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0x1[0]* x1[1]x0[0]* x0[1])


(0) -> (2), if (x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0x1[0]* x1[2]x0[0]* x0[2])


(1) -> (3), if (997_0_parts_GT(x1[1], x0[1] - x1[1]) →* 1004_0_parts_Return(x1[3])∧x0[1]* x3[3]x0[1] - x1[1]* x0[3]x1[1]* x1[3])


(3) -> (4), if (x1[3] > 01004_0_parts_Return(x1[3]) →* 1004_0_parts_Return(x1[4])∧x3[3]* x3[4]x0[3]* x0[4]x1[3]* x1[4])


(2) -> (9), if (x1[2]* x1[9]x0[2] - x1[2]* x0[9])


(4) -> (9), if (x1[4] - 1* x1[9]x3[4]* x0[9])


(10) -> (9), if (x0[10]* x1[9]x0[10]* x0[9])


(9) -> (10), if (x1[9] > x0[9] && x1[9] > 0 && x0[9] > 0x1[9]* x1[10]x0[9]* x0[10])



The set Q consists of the following terms:
997_0_parts_GT(x0, x1)
Cond_997_0_parts_GT(TRUE, x0, x1)
1055_1_parts_InvokeMethod(1689_0_parts_Return(x0, x0), x1, x0)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
1786_1_parts_InvokeMethod(1689_0_parts_Return(x0, x1), x0, x1)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0), x0, 0)
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)

(14) IDPNonInfProof (SOUND transformation)

Used the following options for this NonInfProof:
IDPGPoloSolver: Range: [(-1,2)] IsNat: false Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpDefaultShapeHeuristic@48080eb6 Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 1 Max Right Steps: 1

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_997_0_PARTS_GT(TRUE, x1[2], x0[2]) → 997_0_PARTS_GT(x1[2], -(x0[2], x1[2])) the following chains were created:
  • We consider the chain 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_997_0_PARTS_GT(TRUE, x1[2], x0[2]) → 997_0_PARTS_GT(x1[2], -(x0[2], x1[2])), 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]) which results in the following constraint:

    (1)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[2]x0[0]=x0[2]x1[2]=x1[0]1-(x0[2], x1[2])=x0[0]1COND_997_0_PARTS_GT(TRUE, x1[2], x0[2])≥NonInfC∧COND_997_0_PARTS_GT(TRUE, x1[2], x0[2])≥997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))∧(UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥))



    We simplified constraint (1) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (2)    (>(x0[0], 0)=TRUE>(x1[0], 0)=TRUE<=(x1[0], x0[0])=TRUECOND_997_0_PARTS_GT(TRUE, x1[0], x0[0])≥NonInfC∧COND_997_0_PARTS_GT(TRUE, x1[0], x0[0])≥997_0_PARTS_GT(x1[0], -(x0[0], x1[0]))∧(UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)bni_37 + (-1)Bound*bni_37] + [bni_37]x1[0] ≥ 0∧[(-1)bso_38] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)bni_37 + (-1)Bound*bni_37] + [bni_37]x1[0] ≥ 0∧[(-1)bso_38] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)bni_37 + (-1)Bound*bni_37] + [bni_37]x1[0] ≥ 0∧[(-1)bso_38] ≥ 0)



    We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (6)    (x0[0] ≥ 0∧x1[0] + [-1] ≥ 0∧[1] + x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)bni_37 + (-1)Bound*bni_37] + [bni_37]x1[0] ≥ 0∧[(-1)bso_38] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)Bound*bni_37] + [bni_37]x1[0] ≥ 0∧[(-1)bso_38] ≥ 0)



    We simplified constraint (7) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (8)    (x1[0] + x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)Bound*bni_37] + [bni_37]x1[0] ≥ 0∧[(-1)bso_38] ≥ 0)



  • We consider the chain 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_997_0_PARTS_GT(TRUE, x1[2], x0[2]) → 997_0_PARTS_GT(x1[2], -(x0[2], x1[2])), 997_0_PARTS_GT(x1[9], x0[9]) → COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]) which results in the following constraint:

    (9)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[2]x0[0]=x0[2]x1[2]=x1[9]-(x0[2], x1[2])=x0[9]COND_997_0_PARTS_GT(TRUE, x1[2], x0[2])≥NonInfC∧COND_997_0_PARTS_GT(TRUE, x1[2], x0[2])≥997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))∧(UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥))



    We simplified constraint (9) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (10)    (>(x0[0], 0)=TRUE>(x1[0], 0)=TRUE<=(x1[0], x0[0])=TRUECOND_997_0_PARTS_GT(TRUE, x1[0], x0[0])≥NonInfC∧COND_997_0_PARTS_GT(TRUE, x1[0], x0[0])≥997_0_PARTS_GT(x1[0], -(x0[0], x1[0]))∧(UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥))



    We simplified constraint (10) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (11)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)bni_37 + (-1)Bound*bni_37] + [bni_37]x1[0] ≥ 0∧[(-1)bso_38] ≥ 0)



    We simplified constraint (11) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (12)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)bni_37 + (-1)Bound*bni_37] + [bni_37]x1[0] ≥ 0∧[(-1)bso_38] ≥ 0)



    We simplified constraint (12) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (13)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)bni_37 + (-1)Bound*bni_37] + [bni_37]x1[0] ≥ 0∧[(-1)bso_38] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (x0[0] ≥ 0∧x1[0] + [-1] ≥ 0∧[1] + x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)bni_37 + (-1)Bound*bni_37] + [bni_37]x1[0] ≥ 0∧[(-1)bso_38] ≥ 0)



    We simplified constraint (14) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (15)    (x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)Bound*bni_37] + [bni_37]x1[0] ≥ 0∧[(-1)bso_38] ≥ 0)



    We simplified constraint (15) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (16)    (x1[0] + x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)Bound*bni_37] + [bni_37]x1[0] ≥ 0∧[(-1)bso_38] ≥ 0)







For Pair COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 997_0_PARTS_GT(x0[10], x0[10]) the following chains were created:
  • We consider the chain COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 997_0_PARTS_GT(x0[10], x0[10]), 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]) which results in the following constraint:

    (17)    (x0[10]=x1[0]x0[10]=x0[0]COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10])≥NonInfC∧COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10])≥997_0_PARTS_GT(x0[10], x0[10])∧(UIncreasing(997_0_PARTS_GT(x0[10], x0[10])), ≥))



    We simplified constraint (17) using rule (IV) which results in the following new constraint:

    (18)    (COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10])≥NonInfC∧COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10])≥997_0_PARTS_GT(x0[10], x0[10])∧(UIncreasing(997_0_PARTS_GT(x0[10], x0[10])), ≥))



    We simplified constraint (18) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (19)    ((UIncreasing(997_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_39] = 0∧[(-1)bso_40] ≥ 0)



    We simplified constraint (19) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (20)    ((UIncreasing(997_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_39] = 0∧[(-1)bso_40] ≥ 0)



    We simplified constraint (20) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (21)    ((UIncreasing(997_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_39] = 0∧[(-1)bso_40] ≥ 0)



    We simplified constraint (21) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (22)    ((UIncreasing(997_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_39] = 0∧0 = 0∧0 = 0∧[(-1)bso_40] ≥ 0)



  • We consider the chain COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 997_0_PARTS_GT(x0[10], x0[10]), 997_0_PARTS_GT(x1[9], x0[9]) → COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]) which results in the following constraint:

    (23)    (x0[10]=x1[9]x0[10]=x0[9]COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10])≥NonInfC∧COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10])≥997_0_PARTS_GT(x0[10], x0[10])∧(UIncreasing(997_0_PARTS_GT(x0[10], x0[10])), ≥))



    We simplified constraint (23) using rule (IV) which results in the following new constraint:

    (24)    (COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10])≥NonInfC∧COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10])≥997_0_PARTS_GT(x0[10], x0[10])∧(UIncreasing(997_0_PARTS_GT(x0[10], x0[10])), ≥))



    We simplified constraint (24) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (25)    ((UIncreasing(997_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_39] = 0∧[(-1)bso_40] ≥ 0)



    We simplified constraint (25) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (26)    ((UIncreasing(997_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_39] = 0∧[(-1)bso_40] ≥ 0)



    We simplified constraint (26) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (27)    ((UIncreasing(997_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_39] = 0∧[(-1)bso_40] ≥ 0)



    We simplified constraint (27) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (28)    ((UIncreasing(997_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_39] = 0∧0 = 0∧0 = 0∧[(-1)bso_40] ≥ 0)







For Pair 997_0_PARTS_GT(x1[9], x0[9]) → COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]) the following chains were created:
  • We consider the chain 997_0_PARTS_GT(x1[9], x0[9]) → COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]), COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 997_0_PARTS_GT(x0[10], x0[10]) which results in the following constraint:

    (29)    (&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0))=TRUEx1[9]=x1[10]x0[9]=x0[10]997_0_PARTS_GT(x1[9], x0[9])≥NonInfC∧997_0_PARTS_GT(x1[9], x0[9])≥COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])∧(UIncreasing(COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥))



    We simplified constraint (29) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (30)    (>(x0[9], 0)=TRUE>(x1[9], x0[9])=TRUE>(x1[9], 0)=TRUE997_0_PARTS_GT(x1[9], x0[9])≥NonInfC∧997_0_PARTS_GT(x1[9], x0[9])≥COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])∧(UIncreasing(COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥))



    We simplified constraint (30) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (31)    (x0[9] + [-1] ≥ 0∧x1[9] + [-1] + [-1]x0[9] ≥ 0∧x1[9] + [-1] ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [bni_41]x1[9] ≥ 0∧[(-1)bso_42] + [-1]x0[9] + x1[9] ≥ 0)



    We simplified constraint (31) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (32)    (x0[9] + [-1] ≥ 0∧x1[9] + [-1] + [-1]x0[9] ≥ 0∧x1[9] + [-1] ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [bni_41]x1[9] ≥ 0∧[(-1)bso_42] + [-1]x0[9] + x1[9] ≥ 0)



    We simplified constraint (32) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (33)    (x0[9] + [-1] ≥ 0∧x1[9] + [-1] + [-1]x0[9] ≥ 0∧x1[9] + [-1] ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [bni_41]x1[9] ≥ 0∧[(-1)bso_42] + [-1]x0[9] + x1[9] ≥ 0)



    We simplified constraint (33) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (34)    (x0[9] ≥ 0∧x1[9] + [-2] + [-1]x0[9] ≥ 0∧x1[9] + [-1] ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [bni_41]x1[9] ≥ 0∧[-1 + (-1)bso_42] + [-1]x0[9] + x1[9] ≥ 0)



    We simplified constraint (34) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (35)    (x0[9] ≥ 0∧x1[9] ≥ 0∧[1] + x0[9] + x1[9] ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧[bni_41 + (-1)Bound*bni_41] + [bni_41]x0[9] + [bni_41]x1[9] ≥ 0∧[1 + (-1)bso_42] + x1[9] ≥ 0)







For Pair COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 997_0_PARTS_GT(-(x1[4], 1), x3[4]) the following chains were created:
  • We consider the chain 1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]), COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 997_0_PARTS_GT(-(x1[4], 1), x3[4]), 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]) which results in the following constraint:

    (36)    (>(x1[3], 0)=TRUE1004_0_parts_Return(x1[3])=1004_0_parts_Return(x1[4])∧x3[3]=x3[4]x0[3]=x0[4]x1[3]=x1[4]-(x1[4], 1)=x1[0]x3[4]=x0[0]COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[4]), x3[4], x0[4], x1[4])≥NonInfC∧COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[4]), x3[4], x0[4], x1[4])≥997_0_PARTS_GT(-(x1[4], 1), x3[4])∧(UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥))



    We simplified constraint (36) using rules (I), (II), (III), (IV) which results in the following new constraint:

    (37)    (>(x1[3], 0)=TRUECOND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥NonInfC∧COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥997_0_PARTS_GT(-(x1[3], 1), x3[3])∧(UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥))



    We simplified constraint (37) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (38)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-2)bni_43 + (-1)Bound*bni_43] + [bni_43]x1[3] ≥ 0∧[(-1)bso_44] ≥ 0)



    We simplified constraint (38) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (39)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-2)bni_43 + (-1)Bound*bni_43] + [bni_43]x1[3] ≥ 0∧[(-1)bso_44] ≥ 0)



    We simplified constraint (39) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (40)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-2)bni_43 + (-1)Bound*bni_43] + [bni_43]x1[3] ≥ 0∧[(-1)bso_44] ≥ 0)



    We simplified constraint (40) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (41)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 = 0∧0 = 0∧[(-2)bni_43 + (-1)Bound*bni_43] + [bni_43]x1[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_44] ≥ 0)



    We simplified constraint (41) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (42)    (x1[3] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_43 + (-1)Bound*bni_43] + [bni_43]x1[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_44] ≥ 0)



  • We consider the chain 1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]), COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 997_0_PARTS_GT(-(x1[4], 1), x3[4]), 997_0_PARTS_GT(x1[9], x0[9]) → COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]) which results in the following constraint:

    (43)    (>(x1[3], 0)=TRUE1004_0_parts_Return(x1[3])=1004_0_parts_Return(x1[4])∧x3[3]=x3[4]x0[3]=x0[4]x1[3]=x1[4]-(x1[4], 1)=x1[9]x3[4]=x0[9]COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[4]), x3[4], x0[4], x1[4])≥NonInfC∧COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[4]), x3[4], x0[4], x1[4])≥997_0_PARTS_GT(-(x1[4], 1), x3[4])∧(UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥))



    We simplified constraint (43) using rules (I), (II), (III), (IV) which results in the following new constraint:

    (44)    (>(x1[3], 0)=TRUECOND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥NonInfC∧COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥997_0_PARTS_GT(-(x1[3], 1), x3[3])∧(UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥))



    We simplified constraint (44) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (45)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-2)bni_43 + (-1)Bound*bni_43] + [bni_43]x1[3] ≥ 0∧[(-1)bso_44] ≥ 0)



    We simplified constraint (45) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (46)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-2)bni_43 + (-1)Bound*bni_43] + [bni_43]x1[3] ≥ 0∧[(-1)bso_44] ≥ 0)



    We simplified constraint (46) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (47)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-2)bni_43 + (-1)Bound*bni_43] + [bni_43]x1[3] ≥ 0∧[(-1)bso_44] ≥ 0)



    We simplified constraint (47) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (48)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 = 0∧0 = 0∧[(-2)bni_43 + (-1)Bound*bni_43] + [bni_43]x1[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_44] ≥ 0)



    We simplified constraint (48) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (49)    (x1[3] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_43 + (-1)Bound*bni_43] + [bni_43]x1[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_44] ≥ 0)







For Pair 1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) the following chains were created:
  • We consider the chain 1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]), COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 997_0_PARTS_GT(-(x1[4], 1), x3[4]) which results in the following constraint:

    (50)    (>(x1[3], 0)=TRUE1004_0_parts_Return(x1[3])=1004_0_parts_Return(x1[4])∧x3[3]=x3[4]x0[3]=x0[4]x1[3]=x1[4]1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥NonInfC∧1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])∧(UIncreasing(COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥))



    We simplified constraint (50) using rules (I), (II), (IV) which results in the following new constraint:

    (51)    (>(x1[3], 0)=TRUE1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥NonInfC∧1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])∧(UIncreasing(COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥))



    We simplified constraint (51) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (52)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧[(-2)bni_45 + (-1)Bound*bni_45] + [bni_45]x1[3] ≥ 0∧[(-1)bso_46] ≥ 0)



    We simplified constraint (52) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (53)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧[(-2)bni_45 + (-1)Bound*bni_45] + [bni_45]x1[3] ≥ 0∧[(-1)bso_46] ≥ 0)



    We simplified constraint (53) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (54)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧[(-2)bni_45 + (-1)Bound*bni_45] + [bni_45]x1[3] ≥ 0∧[(-1)bso_46] ≥ 0)



    We simplified constraint (54) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (55)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧0 = 0∧0 = 0∧[(-2)bni_45 + (-1)Bound*bni_45] + [bni_45]x1[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_46] ≥ 0)



    We simplified constraint (55) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (56)    (x1[3] ≥ 0 ⇒ (UIncreasing(COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_45 + (-1)Bound*bni_45] + [bni_45]x1[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_46] ≥ 0)







For Pair COND_997_0_PARTS_GT(TRUE, x1[1], x0[1]) → 1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1]) the following chains were created:
  • We consider the chain 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_997_0_PARTS_GT(TRUE, x1[1], x0[1]) → 1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1]), 1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) which results in the following constraint:

    (57)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[1]x0[0]=x0[1]997_0_parts_GT(x1[1], -(x0[1], x1[1]))=1004_0_parts_Return(x1[3])∧x0[1]=x3[3]-(x0[1], x1[1])=x0[3]x1[1]=x1[3]COND_997_0_PARTS_GT(TRUE, x1[1], x0[1])≥NonInfC∧COND_997_0_PARTS_GT(TRUE, x1[1], x0[1])≥1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])∧(UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥))



    We simplified constraint (57) using rules (III), (IV), (VII), (IDP_BOOLEAN), (REWRITING) which results in the following new constraint:

    (58)    (<=(-(x0[0], x1[0]), 0)=x0-(x0[0], x1[0])=x1Cond_997_0_parts_GT(x0, x1[0], x1)=1004_0_parts_Return(x1[0])∧>(x0[0], 0)=TRUE>(x1[0], 0)=TRUE<=(x1[0], x0[0])=TRUECOND_997_0_PARTS_GT(TRUE, x1[0], x0[0])≥NonInfC∧COND_997_0_PARTS_GT(TRUE, x1[0], x0[0])≥1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[0], -(x0[0], x1[0])), x0[0], -(x0[0], x1[0]), x1[0])∧(UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥))



    We simplified constraint (58) using rule (V) (with possible (I) afterwards) using induction on Cond_997_0_parts_GT(x0, x1[0], x1)=1004_0_parts_Return(x1[0]) which results in the following new constraint:

    (59)    (1004_0_parts_Return(x3)=1004_0_parts_Return(x3)∧<=(-(x0[0], x3), 0)=TRUE-(x0[0], x3)=x2>(x0[0], 0)=TRUE>(x3, 0)=TRUE<=(x3, x0[0])=TRUECOND_997_0_PARTS_GT(TRUE, x3, x0[0])≥NonInfC∧COND_997_0_PARTS_GT(TRUE, x3, x0[0])≥1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x3, -(x0[0], x3)), x0[0], -(x0[0], x3), x3)∧(UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥))



    We simplified constraint (59) using rules (I), (II), (IV), (DELETE_TRIVIAL_REDUCESTO) which results in the following new constraint:

    (60)    (<=(-(x0[0], x3), 0)=TRUE>(x0[0], 0)=TRUE>(x3, 0)=TRUE<=(x3, x0[0])=TRUECOND_997_0_PARTS_GT(TRUE, x3, x0[0])≥NonInfC∧COND_997_0_PARTS_GT(TRUE, x3, x0[0])≥1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x3, -(x0[0], x3)), x0[0], -(x0[0], x3), x3)∧(UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥))



    We simplified constraint (60) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (61)    ([-1]x0[0] + x3 ≥ 0∧x0[0] + [-1] ≥ 0∧x3 + [-1] ≥ 0∧x0[0] + [-1]x3 ≥ 0 ⇒ (UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)bni_47 + (-1)Bound*bni_47] + [bni_47]x3 ≥ 0∧[1 + (-1)bso_48] ≥ 0)



    We simplified constraint (61) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (62)    ([-1]x0[0] + x3 ≥ 0∧x0[0] + [-1] ≥ 0∧x3 + [-1] ≥ 0∧x0[0] + [-1]x3 ≥ 0 ⇒ (UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)bni_47 + (-1)Bound*bni_47] + [bni_47]x3 ≥ 0∧[1 + (-1)bso_48] ≥ 0)



    We simplified constraint (62) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (63)    ([-1]x0[0] + x3 ≥ 0∧x0[0] + [-1] ≥ 0∧x3 + [-1] ≥ 0∧x0[0] + [-1]x3 ≥ 0 ⇒ (UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)bni_47 + (-1)Bound*bni_47] + [bni_47]x3 ≥ 0∧[1 + (-1)bso_48] ≥ 0)



    We simplified constraint (63) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (64)    ([-1] + [-1]x0[0] + x3 ≥ 0∧x0[0] ≥ 0∧x3 + [-1] ≥ 0∧[1] + x0[0] + [-1]x3 ≥ 0 ⇒ (UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)bni_47 + (-1)Bound*bni_47] + [bni_47]x3 ≥ 0∧[1 + (-1)bso_48] ≥ 0)



    We simplified constraint (64) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (65)    (x3 ≥ 0∧x0[0] ≥ 0∧x0[0] + x3 ≥ 0∧[-1]x3 ≥ 0 ⇒ (UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)Bound*bni_47] + [bni_47]x0[0] + [bni_47]x3 ≥ 0∧[1 + (-1)bso_48] ≥ 0)



    We simplified constraint (65) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (66)    (0 ≥ 0∧x0[0] ≥ 0∧x0[0] ≥ 0∧0 ≥ 0 ⇒ (UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)Bound*bni_47] + [bni_47]x0[0] ≥ 0∧[1 + (-1)bso_48] ≥ 0)







For Pair 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]) the following chains were created:
  • We consider the chain 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_997_0_PARTS_GT(TRUE, x1[1], x0[1]) → 1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1]) which results in the following constraint:

    (67)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[1]x0[0]=x0[1]997_0_PARTS_GT(x1[0], x0[0])≥NonInfC∧997_0_PARTS_GT(x1[0], x0[0])≥COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])∧(UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥))



    We simplified constraint (67) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (68)    (>(x0[0], 0)=TRUE>(x1[0], 0)=TRUE<=(x1[0], x0[0])=TRUE997_0_PARTS_GT(x1[0], x0[0])≥NonInfC∧997_0_PARTS_GT(x1[0], x0[0])≥COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])∧(UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥))



    We simplified constraint (68) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (69)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)bni_49 + (-1)Bound*bni_49] + [bni_49]x1[0] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (69) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (70)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)bni_49 + (-1)Bound*bni_49] + [bni_49]x1[0] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (70) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (71)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)bni_49 + (-1)Bound*bni_49] + [bni_49]x1[0] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (71) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (72)    (x0[0] ≥ 0∧x1[0] + [-1] ≥ 0∧[1] + x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)bni_49 + (-1)Bound*bni_49] + [bni_49]x1[0] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (72) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (73)    (x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)Bound*bni_49] + [bni_49]x1[0] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (73) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (74)    (x1[0] + x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)Bound*bni_49] + [bni_49]x1[0] ≥ 0∧[(-1)bso_50] ≥ 0)



  • We consider the chain 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_997_0_PARTS_GT(TRUE, x1[2], x0[2]) → 997_0_PARTS_GT(x1[2], -(x0[2], x1[2])) which results in the following constraint:

    (75)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[2]x0[0]=x0[2]997_0_PARTS_GT(x1[0], x0[0])≥NonInfC∧997_0_PARTS_GT(x1[0], x0[0])≥COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])∧(UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥))



    We simplified constraint (75) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (76)    (>(x0[0], 0)=TRUE>(x1[0], 0)=TRUE<=(x1[0], x0[0])=TRUE997_0_PARTS_GT(x1[0], x0[0])≥NonInfC∧997_0_PARTS_GT(x1[0], x0[0])≥COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])∧(UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥))



    We simplified constraint (76) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (77)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)bni_49 + (-1)Bound*bni_49] + [bni_49]x1[0] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (77) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (78)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)bni_49 + (-1)Bound*bni_49] + [bni_49]x1[0] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (78) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (79)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)bni_49 + (-1)Bound*bni_49] + [bni_49]x1[0] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (79) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (80)    (x0[0] ≥ 0∧x1[0] + [-1] ≥ 0∧[1] + x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)bni_49 + (-1)Bound*bni_49] + [bni_49]x1[0] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (80) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (81)    (x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)Bound*bni_49] + [bni_49]x1[0] ≥ 0∧[(-1)bso_50] ≥ 0)



    We simplified constraint (81) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (82)    (x1[0] + x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)Bound*bni_49] + [bni_49]x1[0] ≥ 0∧[(-1)bso_50] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_997_0_PARTS_GT(TRUE, x1[2], x0[2]) → 997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))
    • (x1[0] + x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)Bound*bni_37] + [bni_37]x1[0] ≥ 0∧[(-1)bso_38] ≥ 0)
    • (x1[0] + x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)Bound*bni_37] + [bni_37]x1[0] ≥ 0∧[(-1)bso_38] ≥ 0)

  • COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 997_0_PARTS_GT(x0[10], x0[10])
    • ((UIncreasing(997_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_39] = 0∧0 = 0∧0 = 0∧[(-1)bso_40] ≥ 0)
    • ((UIncreasing(997_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_39] = 0∧0 = 0∧0 = 0∧[(-1)bso_40] ≥ 0)

  • 997_0_PARTS_GT(x1[9], x0[9]) → COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])
    • (x0[9] ≥ 0∧x1[9] ≥ 0∧[1] + x0[9] + x1[9] ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧[bni_41 + (-1)Bound*bni_41] + [bni_41]x0[9] + [bni_41]x1[9] ≥ 0∧[1 + (-1)bso_42] + x1[9] ≥ 0)

  • COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 997_0_PARTS_GT(-(x1[4], 1), x3[4])
    • (x1[3] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_43 + (-1)Bound*bni_43] + [bni_43]x1[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_44] ≥ 0)
    • (x1[3] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_43 + (-1)Bound*bni_43] + [bni_43]x1[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_44] ≥ 0)

  • 1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])
    • (x1[3] ≥ 0 ⇒ (UIncreasing(COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_45 + (-1)Bound*bni_45] + [bni_45]x1[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_46] ≥ 0)

  • COND_997_0_PARTS_GT(TRUE, x1[1], x0[1]) → 1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])
    • (0 ≥ 0∧x0[0] ≥ 0∧x0[0] ≥ 0∧0 ≥ 0 ⇒ (UIncreasing(1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)Bound*bni_47] + [bni_47]x0[0] ≥ 0∧[1 + (-1)bso_48] ≥ 0)

  • 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])
    • (x1[0] + x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)Bound*bni_49] + [bni_49]x1[0] ≥ 0∧[(-1)bso_50] ≥ 0)
    • (x1[0] + x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)Bound*bni_49] + [bni_49]x1[0] ≥ 0∧[(-1)bso_50] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(997_0_parts_GT(x1, x2)) = [1] + [-1]x1   
POL(Cond_997_0_parts_GT(x1, x2, x3)) = [1] + [-1]x2   
POL(<=(x1, x2)) = [-1]   
POL(0) = 0   
POL(1004_0_parts_Return(x1)) = [1] + [-1]x1   
POL(COND_997_0_PARTS_GT(x1, x2, x3)) = [-1] + x2 + [-1]x1   
POL(997_0_PARTS_GT(x1, x2)) = [-1] + x1   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(COND_997_0_PARTS_GT1(x1, x2, x3)) = [-1] + x3 + [-1]x1   
POL(&&(x1, x2)) = 0   
POL(>(x1, x2)) = [-1]   
POL(COND_1063_1_PARTS_INVOKEMETHOD(x1, x2, x3, x4, x5)) = [-1] + [-1]x2   
POL(1) = [1]   
POL(1063_1_PARTS_INVOKEMETHOD(x1, x2, x3, x4)) = [-1] + [-1]x1   

The following pairs are in P>:

997_0_PARTS_GT(x1[9], x0[9]) → COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])
COND_997_0_PARTS_GT(TRUE, x1[1], x0[1]) → 1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])

The following pairs are in Pbound:

COND_997_0_PARTS_GT(TRUE, x1[2], x0[2]) → 997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))
997_0_PARTS_GT(x1[9], x0[9]) → COND_997_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])
COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 997_0_PARTS_GT(-(x1[4], 1), x3[4])
1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])
COND_997_0_PARTS_GT(TRUE, x1[1], x0[1]) → 1063_1_PARTS_INVOKEMETHOD(997_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])
997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])

The following pairs are in P:

COND_997_0_PARTS_GT(TRUE, x1[2], x0[2]) → 997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))
COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 997_0_PARTS_GT(x0[10], x0[10])
COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 997_0_PARTS_GT(-(x1[4], 1), x3[4])
1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_1063_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])
997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])

At least the following rules have been oriented under context sensitive arithmetic replacement:

&&(TRUE, TRUE)1TRUE1
&&(TRUE, FALSE)1FALSE1
&&(FALSE, TRUE)1FALSE1
&&(FALSE, FALSE)1FALSE1
997_0_parts_GT(x1, x0)1Cond_997_0_parts_GT(<=(x0, 0), x1, x0)1
Cond_997_0_parts_GT(TRUE, x1, x0)11004_0_parts_Return(x1)1

(15) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT(x0 <= 0, x1, x0)
Cond_997_0_parts_GT(TRUE, x1, x0) → 1004_0_parts_Return(x1)

The integer pair graph contains the following rules and edges:
(2): COND_997_0_PARTS_GT(TRUE, x1[2], x0[2]) → 997_0_PARTS_GT(x1[2], x0[2] - x1[2])
(10): COND_997_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 997_0_PARTS_GT(x0[10], x0[10])
(4): COND_1063_1_PARTS_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 997_0_PARTS_GT(x1[4] - 1, x3[4])
(3): 1063_1_PARTS_INVOKEMETHOD(1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_1063_1_PARTS_INVOKEMETHOD(x1[3] > 0, 1004_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])
(0): 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0, x1[0], x0[0])

(2) -> (0), if (x1[2]* x1[0]x0[2] - x1[2]* x0[0])


(4) -> (0), if (x1[4] - 1* x1[0]x3[4]* x0[0])


(10) -> (0), if (x0[10]* x1[0]x0[10]* x0[0])


(0) -> (2), if (x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0x1[0]* x1[2]x0[0]* x0[2])


(3) -> (4), if (x1[3] > 01004_0_parts_Return(x1[3]) →* 1004_0_parts_Return(x1[4])∧x3[3]* x3[4]x0[3]* x0[4]x1[3]* x1[4])



The set Q consists of the following terms:
997_0_parts_GT(x0, x1)
Cond_997_0_parts_GT(TRUE, x0, x1)
1055_1_parts_InvokeMethod(1689_0_parts_Return(x0, x0), x1, x0)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
1786_1_parts_InvokeMethod(1689_0_parts_Return(x0, x1), x0, x1)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0), x0, 0)
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)

(16) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 3 less nodes.

(17) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT(x0 <= 0, x1, x0)
Cond_997_0_parts_GT(TRUE, x1, x0) → 1004_0_parts_Return(x1)

The integer pair graph contains the following rules and edges:
(0): 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0, x1[0], x0[0])
(2): COND_997_0_PARTS_GT(TRUE, x1[2], x0[2]) → 997_0_PARTS_GT(x1[2], x0[2] - x1[2])

(2) -> (0), if (x1[2]* x1[0]x0[2] - x1[2]* x0[0])


(0) -> (2), if (x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0x1[0]* x1[2]x0[0]* x0[2])



The set Q consists of the following terms:
997_0_parts_GT(x0, x1)
Cond_997_0_parts_GT(TRUE, x0, x1)
1055_1_parts_InvokeMethod(1689_0_parts_Return(x0, x0), x1, x0)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
1786_1_parts_InvokeMethod(1689_0_parts_Return(x0, x1), x0, x1)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0), x0, 0)
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)

(18) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

(19) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0, x1[0], x0[0])
(2): COND_997_0_PARTS_GT(TRUE, x1[2], x0[2]) → 997_0_PARTS_GT(x1[2], x0[2] - x1[2])

(2) -> (0), if (x1[2]* x1[0]x0[2] - x1[2]* x0[0])


(0) -> (2), if (x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0x1[0]* x1[2]x0[0]* x0[2])



The set Q consists of the following terms:
997_0_parts_GT(x0, x1)
Cond_997_0_parts_GT(TRUE, x0, x1)
1055_1_parts_InvokeMethod(1689_0_parts_Return(x0, x0), x1, x0)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
1786_1_parts_InvokeMethod(1689_0_parts_Return(x0, x1), x0, x1)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0), x0, 0)
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)

(20) IDPNonInfProof (SOUND transformation)

Used the following options for this NonInfProof:
IDPGPoloSolver: Range: [(-1,2)] IsNat: false Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpDefaultShapeHeuristic@48080eb6 Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 1 Max Right Steps: 1

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]) the following chains were created:
  • We consider the chain 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_997_0_PARTS_GT(TRUE, x1[2], x0[2]) → 997_0_PARTS_GT(x1[2], -(x0[2], x1[2])) which results in the following constraint:

    (1)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[2]x0[0]=x0[2]997_0_PARTS_GT(x1[0], x0[0])≥NonInfC∧997_0_PARTS_GT(x1[0], x0[0])≥COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])∧(UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥))



    We simplified constraint (1) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (2)    (>(x0[0], 0)=TRUE>(x1[0], 0)=TRUE<=(x1[0], x0[0])=TRUE997_0_PARTS_GT(x1[0], x0[0])≥NonInfC∧997_0_PARTS_GT(x1[0], x0[0])≥COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])∧(UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]x0[0] + [(-1)bni_13]x1[0] ≥ 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]x0[0] + [(-1)bni_13]x1[0] ≥ 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]x0[0] + [(-1)bni_13]x1[0] ≥ 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (6)    (x0[0] ≥ 0∧x1[0] + [-1] ≥ 0∧[1] + x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)Bound*bni_13] + [bni_13]x0[0] + [(-1)bni_13]x1[0] ≥ 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)Bound*bni_13 + (-1)bni_13] + [bni_13]x0[0] + [(-1)bni_13]x1[0] ≥ 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (7) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (8)    (x1[0] + x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)Bound*bni_13 + (-1)bni_13] + [bni_13]x0[0] ≥ 0∧[(-1)bso_14] ≥ 0)







For Pair COND_997_0_PARTS_GT(TRUE, x1[2], x0[2]) → 997_0_PARTS_GT(x1[2], -(x0[2], x1[2])) the following chains were created:
  • We consider the chain 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_997_0_PARTS_GT(TRUE, x1[2], x0[2]) → 997_0_PARTS_GT(x1[2], -(x0[2], x1[2])), 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]) which results in the following constraint:

    (9)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[2]x0[0]=x0[2]x1[2]=x1[0]1-(x0[2], x1[2])=x0[0]1COND_997_0_PARTS_GT(TRUE, x1[2], x0[2])≥NonInfC∧COND_997_0_PARTS_GT(TRUE, x1[2], x0[2])≥997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))∧(UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥))



    We simplified constraint (9) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (10)    (>(x0[0], 0)=TRUE>(x1[0], 0)=TRUE<=(x1[0], x0[0])=TRUECOND_997_0_PARTS_GT(TRUE, x1[0], x0[0])≥NonInfC∧COND_997_0_PARTS_GT(TRUE, x1[0], x0[0])≥997_0_PARTS_GT(x1[0], -(x0[0], x1[0]))∧(UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥))



    We simplified constraint (10) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (11)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]x0[0] + [(-1)bni_15]x1[0] ≥ 0∧[(-1)bso_16] + x1[0] ≥ 0)



    We simplified constraint (11) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (12)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]x0[0] + [(-1)bni_15]x1[0] ≥ 0∧[(-1)bso_16] + x1[0] ≥ 0)



    We simplified constraint (12) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (13)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]x0[0] + [(-1)bni_15]x1[0] ≥ 0∧[(-1)bso_16] + x1[0] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (x0[0] ≥ 0∧x1[0] + [-1] ≥ 0∧[1] + x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)Bound*bni_15] + [bni_15]x0[0] + [(-1)bni_15]x1[0] ≥ 0∧[(-1)bso_16] + x1[0] ≥ 0)



    We simplified constraint (14) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (15)    (x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)Bound*bni_15 + (-1)bni_15] + [bni_15]x0[0] + [(-1)bni_15]x1[0] ≥ 0∧[1 + (-1)bso_16] + x1[0] ≥ 0)



    We simplified constraint (15) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (16)    (x1[0] + x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)Bound*bni_15 + (-1)bni_15] + [bni_15]x0[0] ≥ 0∧[1 + (-1)bso_16] + x1[0] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])
    • (x1[0] + x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)Bound*bni_13 + (-1)bni_13] + [bni_13]x0[0] ≥ 0∧[(-1)bso_14] ≥ 0)

  • COND_997_0_PARTS_GT(TRUE, x1[2], x0[2]) → 997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))
    • (x1[0] + x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)Bound*bni_15 + (-1)bni_15] + [bni_15]x0[0] ≥ 0∧[1 + (-1)bso_16] + x1[0] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = [1]   
POL(997_0_PARTS_GT(x1, x2)) = [-1] + x2 + [-1]x1   
POL(COND_997_0_PARTS_GT(x1, x2, x3)) = [-1] + x3 + [-1]x2 + [-1]x1   
POL(&&(x1, x2)) = 0   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(<=(x1, x2)) = [-1]   
POL(-(x1, x2)) = x1 + [-1]x2   

The following pairs are in P>:

COND_997_0_PARTS_GT(TRUE, x1[2], x0[2]) → 997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))

The following pairs are in Pbound:

997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])
COND_997_0_PARTS_GT(TRUE, x1[2], x0[2]) → 997_0_PARTS_GT(x1[2], -(x0[2], x1[2]))

The following pairs are in P:

997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])

At least the following rules have been oriented under context sensitive arithmetic replacement:

&&(TRUE, TRUE)1TRUE1
FALSE1&&(TRUE, FALSE)1
FALSE1&&(FALSE, TRUE)1
FALSE1&&(FALSE, FALSE)1

(21) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): 997_0_PARTS_GT(x1[0], x0[0]) → COND_997_0_PARTS_GT(x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0, x1[0], x0[0])


The set Q consists of the following terms:
997_0_parts_GT(x0, x1)
Cond_997_0_parts_GT(TRUE, x0, x1)
1055_1_parts_InvokeMethod(1689_0_parts_Return(x0, x0), x1, x0)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
1786_1_parts_InvokeMethod(1689_0_parts_Return(x0, x1), x0, x1)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0), x0, 0)
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)

(22) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(23) TRUE

(24) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: Parts.main([Ljava/lang/String;)V
SCC calls the following helper methods: Parts.parts(II)I
Performed SCC analyses: UsedFieldsAnalysis

(25) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 51 rules for P and 90 rules for R.


P rules:
435_0_main_Load(EOS(STATIC_435), java.lang.Object(ARRAY(i1)), i29, i29) → 437_0_main_ArrayLength(EOS(STATIC_437), java.lang.Object(ARRAY(i1)), i29, i29, java.lang.Object(ARRAY(i1)))
437_0_main_ArrayLength(EOS(STATIC_437), java.lang.Object(ARRAY(i1)), i29, i29, java.lang.Object(ARRAY(i1))) → 439_0_main_GT(EOS(STATIC_439), java.lang.Object(ARRAY(i1)), i29, i29, i1) | >=(i1, 0)
439_0_main_GT(EOS(STATIC_439), java.lang.Object(ARRAY(i1)), i29, i29, i1) → 443_0_main_GT(EOS(STATIC_443), java.lang.Object(ARRAY(i1)), i29, i29, i1)
443_0_main_GT(EOS(STATIC_443), java.lang.Object(ARRAY(i1)), i29, i29, i1) → 447_0_main_ConstantStackPush(EOS(STATIC_447), java.lang.Object(ARRAY(i1)), i29) | <=(i29, i1)
447_0_main_ConstantStackPush(EOS(STATIC_447), java.lang.Object(ARRAY(i1)), i29) → 451_0_main_Store(EOS(STATIC_451), java.lang.Object(ARRAY(i1)), i29, 0)
451_0_main_Store(EOS(STATIC_451), java.lang.Object(ARRAY(i1)), i29, matching1) → 452_0_main_Load(EOS(STATIC_452), java.lang.Object(ARRAY(i1)), i29, 0) | =(matching1, 0)
452_0_main_Load(EOS(STATIC_452), java.lang.Object(ARRAY(i1)), i29, matching1) → 522_0_main_Load(EOS(STATIC_522), java.lang.Object(ARRAY(i1)), i29, 0) | =(matching1, 0)
522_0_main_Load(EOS(STATIC_522), java.lang.Object(ARRAY(i1)), i39, i40) → 860_0_main_Load(EOS(STATIC_860), java.lang.Object(ARRAY(i1)), i39, i40)
860_0_main_Load(EOS(STATIC_860), java.lang.Object(ARRAY(i1)), i98, i99) → 1041_0_main_Load(EOS(STATIC_1041), java.lang.Object(ARRAY(i1)), i98, i99)
1041_0_main_Load(EOS(STATIC_1041), java.lang.Object(ARRAY(i1)), i171, i172) → 1047_0_main_Load(EOS(STATIC_1047), java.lang.Object(ARRAY(i1)), i171, i172, i172)
1047_0_main_Load(EOS(STATIC_1047), java.lang.Object(ARRAY(i1)), i171, i172, i172) → 1051_0_main_ArrayLength(EOS(STATIC_1051), java.lang.Object(ARRAY(i1)), i171, i172, i172, java.lang.Object(ARRAY(i1)))
1051_0_main_ArrayLength(EOS(STATIC_1051), java.lang.Object(ARRAY(i1)), i171, i172, i172, java.lang.Object(ARRAY(i1))) → 1056_0_main_GT(EOS(STATIC_1056), java.lang.Object(ARRAY(i1)), i171, i172, i172, i1) | >=(i1, 0)
1056_0_main_GT(EOS(STATIC_1056), java.lang.Object(ARRAY(i1)), i171, i172, i172, i1) → 1061_0_main_GT(EOS(STATIC_1061), java.lang.Object(ARRAY(i1)), i171, i172, i172, i1)
1056_0_main_GT(EOS(STATIC_1056), java.lang.Object(ARRAY(i1)), i171, i172, i172, i1) → 1062_0_main_GT(EOS(STATIC_1062), java.lang.Object(ARRAY(i1)), i171, i172, i172, i1)
1061_0_main_GT(EOS(STATIC_1061), java.lang.Object(ARRAY(i1)), i171, i172, i172, i1) → 1065_0_main_Inc(EOS(STATIC_1065), java.lang.Object(ARRAY(i1)), i171) | >(i172, i1)
1065_0_main_Inc(EOS(STATIC_1065), java.lang.Object(ARRAY(i1)), i171) → 1072_0_main_JMP(EOS(STATIC_1072), java.lang.Object(ARRAY(i1)), +(i171, 1))
1072_0_main_JMP(EOS(STATIC_1072), java.lang.Object(ARRAY(i1)), i181) → 1078_0_main_Load(EOS(STATIC_1078), java.lang.Object(ARRAY(i1)), i181)
1078_0_main_Load(EOS(STATIC_1078), java.lang.Object(ARRAY(i1)), i181) → 432_0_main_Load(EOS(STATIC_432), java.lang.Object(ARRAY(i1)), i181)
432_0_main_Load(EOS(STATIC_432), java.lang.Object(ARRAY(i1)), i29) → 435_0_main_Load(EOS(STATIC_435), java.lang.Object(ARRAY(i1)), i29, i29)
1062_0_main_GT(EOS(STATIC_1062), java.lang.Object(ARRAY(i1)), i171, i172, i172, i1) → 1067_0_main_Load(EOS(STATIC_1067), java.lang.Object(ARRAY(i1)), i171, i172) | <=(i172, i1)
1067_0_main_Load(EOS(STATIC_1067), java.lang.Object(ARRAY(i1)), i171, i172) → 1073_0_main_Load(EOS(STATIC_1073), java.lang.Object(ARRAY(i1)), i171, i172, i171)
1073_0_main_Load(EOS(STATIC_1073), java.lang.Object(ARRAY(i1)), i171, i172, i171) → 1080_0_main_InvokeMethod(EOS(STATIC_1080), java.lang.Object(ARRAY(i1)), i171, i172, i171, i172)
1080_0_main_InvokeMethod(EOS(STATIC_1080), java.lang.Object(ARRAY(i1)), i171, i172, i171, i172) → 1163_1_main_InvokeMethod(1163_0_parts_Load(EOS(STATIC_1163), i171, i172), java.lang.Object(ARRAY(i1)), i171, i172, i171, i172)
1163_1_main_InvokeMethod(1004_0_parts_Return(EOS(STATIC_1004), i249, i250, matching1), java.lang.Object(ARRAY(i1)), i249, i250, i249, i250) → 1178_0_parts_Return(EOS(STATIC_1178), java.lang.Object(ARRAY(i1)), i249, i250, i249, i250, i249, i250, 1) | =(matching1, 1)
1163_1_main_InvokeMethod(1018_0_parts_Return(EOS(STATIC_1018), i251, matching1, matching2), java.lang.Object(ARRAY(i1)), i251, matching3, i251, matching4) → 1179_0_parts_Return(EOS(STATIC_1179), java.lang.Object(ARRAY(i1)), i251, 0, i251, 0, i251, 0, 0) | &&(&&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0)), =(matching4, 0))
1163_1_main_InvokeMethod(1689_0_parts_Return(EOS(STATIC_1689), i772, i773, i723), java.lang.Object(ARRAY(i1)), i772, i773, i772, i773) → 1742_0_parts_Return(EOS(STATIC_1742), java.lang.Object(ARRAY(i1)), i772, i773, i772, i773, i772, i773, i723)
1163_1_main_InvokeMethod(1749_0_parts_Return(EOS(STATIC_1749), i827, i828, i778), java.lang.Object(ARRAY(i1)), i827, i828, i827, i828) → 1778_0_parts_Return(EOS(STATIC_1778), java.lang.Object(ARRAY(i1)), i827, i828, i827, i828, i827, i828, i778)
1163_1_main_InvokeMethod(3772_0_parts_Return(EOS(STATIC_3772), i946), java.lang.Object(ARRAY(i1)), i955, i956, i955, i956) → 3779_0_parts_Return(EOS(STATIC_3779), java.lang.Object(ARRAY(i1)), i955, i956, i955, i956, i946)
1178_0_parts_Return(EOS(STATIC_1178), java.lang.Object(ARRAY(i1)), i249, i250, i249, i250, i249, i250, matching1) → 1181_0_main_StackPop(EOS(STATIC_1181), java.lang.Object(ARRAY(i1)), i249, i250, 1) | =(matching1, 1)
1181_0_main_StackPop(EOS(STATIC_1181), java.lang.Object(ARRAY(i1)), i249, i250, matching1) → 1186_0_main_Inc(EOS(STATIC_1186), java.lang.Object(ARRAY(i1)), i249, i250) | =(matching1, 1)
1186_0_main_Inc(EOS(STATIC_1186), java.lang.Object(ARRAY(i1)), i249, i250) → 1190_0_main_JMP(EOS(STATIC_1190), java.lang.Object(ARRAY(i1)), i249, +(i250, 1)) | >=(i250, 0)
1190_0_main_JMP(EOS(STATIC_1190), java.lang.Object(ARRAY(i1)), i249, i253) → 1197_0_main_Load(EOS(STATIC_1197), java.lang.Object(ARRAY(i1)), i249, i253)
1197_0_main_Load(EOS(STATIC_1197), java.lang.Object(ARRAY(i1)), i249, i253) → 1041_0_main_Load(EOS(STATIC_1041), java.lang.Object(ARRAY(i1)), i249, i253)
1179_0_parts_Return(EOS(STATIC_1179), java.lang.Object(ARRAY(i1)), i251, matching1, i251, matching2, i251, matching3, matching4) → 1183_0_main_StackPop(EOS(STATIC_1183), java.lang.Object(ARRAY(i1)), i251, 0, 0) | &&(&&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0)), =(matching4, 0))
1183_0_main_StackPop(EOS(STATIC_1183), java.lang.Object(ARRAY(i1)), i251, matching1, matching2) → 1188_0_main_Inc(EOS(STATIC_1188), java.lang.Object(ARRAY(i1)), i251, 0) | &&(=(matching1, 0), =(matching2, 0))
1188_0_main_Inc(EOS(STATIC_1188), java.lang.Object(ARRAY(i1)), i251, matching1) → 1192_0_main_JMP(EOS(STATIC_1192), java.lang.Object(ARRAY(i1)), i251, 1) | =(matching1, 0)
1192_0_main_JMP(EOS(STATIC_1192), java.lang.Object(ARRAY(i1)), i251, matching1) → 1200_0_main_Load(EOS(STATIC_1200), java.lang.Object(ARRAY(i1)), i251, 1) | =(matching1, 1)
1200_0_main_Load(EOS(STATIC_1200), java.lang.Object(ARRAY(i1)), i251, matching1) → 1041_0_main_Load(EOS(STATIC_1041), java.lang.Object(ARRAY(i1)), i251, 1) | =(matching1, 1)
1742_0_parts_Return(EOS(STATIC_1742), java.lang.Object(ARRAY(i1)), i772, i773, i772, i773, i772, i773, i723) → 1743_0_parts_Return(EOS(STATIC_1743), java.lang.Object(ARRAY(i1)), i772, i773, i772, i773, i772, i773, i723)
1743_0_parts_Return(EOS(STATIC_1743), java.lang.Object(ARRAY(i1)), i803, i804, i803, i804, i803, i804, i805) → 1754_0_main_StackPop(EOS(STATIC_1754), java.lang.Object(ARRAY(i1)), i803, i804, i805)
1754_0_main_StackPop(EOS(STATIC_1754), java.lang.Object(ARRAY(i1)), i803, i804, i805) → 1759_0_main_Inc(EOS(STATIC_1759), java.lang.Object(ARRAY(i1)), i803, i804)
1759_0_main_Inc(EOS(STATIC_1759), java.lang.Object(ARRAY(i1)), i803, i804) → 1770_0_main_JMP(EOS(STATIC_1770), java.lang.Object(ARRAY(i1)), i803, +(i804, 1)) | >(i804, 0)
1770_0_main_JMP(EOS(STATIC_1770), java.lang.Object(ARRAY(i1)), i803, i829) → 1783_0_main_Load(EOS(STATIC_1783), java.lang.Object(ARRAY(i1)), i803, i829)
1783_0_main_Load(EOS(STATIC_1783), java.lang.Object(ARRAY(i1)), i803, i829) → 1041_0_main_Load(EOS(STATIC_1041), java.lang.Object(ARRAY(i1)), i803, i829)
1778_0_parts_Return(EOS(STATIC_1778), java.lang.Object(ARRAY(i1)), i827, i828, i827, i828, i827, i828, i778) → 1743_0_parts_Return(EOS(STATIC_1743), java.lang.Object(ARRAY(i1)), i827, i828, i827, i828, i827, i828, i778)
3779_0_parts_Return(EOS(STATIC_3779), java.lang.Object(ARRAY(i1)), i955, i956, i955, i956, i946) → 1682_0_parts_Return(EOS(STATIC_1682), java.lang.Object(ARRAY(i1)), i955, i956, i955, i956, i946)
1682_0_parts_Return(EOS(STATIC_1682), java.lang.Object(ARRAY(i1)), i745, i746, i745, i746, i744) → 1698_0_main_StackPop(EOS(STATIC_1698), java.lang.Object(ARRAY(i1)), i745, i746, i744)
1698_0_main_StackPop(EOS(STATIC_1698), java.lang.Object(ARRAY(i1)), i745, i746, i744) → 1706_0_main_Inc(EOS(STATIC_1706), java.lang.Object(ARRAY(i1)), i745, i746)
1706_0_main_Inc(EOS(STATIC_1706), java.lang.Object(ARRAY(i1)), i745, i746) → 1726_0_main_JMP(EOS(STATIC_1726), java.lang.Object(ARRAY(i1)), i745, +(i746, 1)) | >(i746, 0)
1726_0_main_JMP(EOS(STATIC_1726), java.lang.Object(ARRAY(i1)), i745, i774) → 1747_0_main_Load(EOS(STATIC_1747), java.lang.Object(ARRAY(i1)), i745, i774)
1747_0_main_Load(EOS(STATIC_1747), java.lang.Object(ARRAY(i1)), i745, i774) → 1041_0_main_Load(EOS(STATIC_1041), java.lang.Object(ARRAY(i1)), i745, i774)
R rules:
1163_0_parts_Load(EOS(STATIC_1163), i171, i172) → 1167_0_parts_Load(EOS(STATIC_1167), i171, i172)
1167_0_parts_Load(EOS(STATIC_1167), i171, i172) → 996_0_parts_Load(EOS(STATIC_996), i171, i172)
1059_0_parts_Load(EOS(STATIC_1059), i164, i164) → 996_0_parts_Load(EOS(STATIC_996), i164, i164)
1068_0_parts_Load(EOS(STATIC_1068), i166) → 996_0_parts_Load(EOS(STATIC_996), i176, i166)
1788_0_parts_Load(EOS(STATIC_1788), i164) → 996_0_parts_Load(EOS(STATIC_996), i164, i840)
996_0_parts_Load(EOS(STATIC_996), i159, i160) → 997_0_parts_GT(EOS(STATIC_997), i159, i160, i159)
997_0_parts_GT(EOS(STATIC_997), i163, i160, i163) → 999_0_parts_GT(EOS(STATIC_999), i163, i160, i163)
997_0_parts_GT(EOS(STATIC_997), i164, i160, i164) → 1000_0_parts_GT(EOS(STATIC_1000), i164, i160, i164)
999_0_parts_GT(EOS(STATIC_999), i163, i160, i163) → 1002_0_parts_ConstantStackPush(EOS(STATIC_1002), i163, i160) | <=(i163, 0)
1000_0_parts_GT(EOS(STATIC_1000), i164, i160, i164) → 1003_0_parts_Load(EOS(STATIC_1003), i164, i160) | >(i164, 0)
1002_0_parts_ConstantStackPush(EOS(STATIC_1002), i163, i160) → 1004_0_parts_Return(EOS(STATIC_1004), i163, i160, 1)
1003_0_parts_Load(EOS(STATIC_1003), i164, i160) → 1006_0_parts_GT(EOS(STATIC_1006), i164, i160, i160)
1006_0_parts_GT(EOS(STATIC_1006), i164, matching1, matching2) → 1009_0_parts_GT(EOS(STATIC_1009), i164, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1006_0_parts_GT(EOS(STATIC_1006), i164, i166, i166) → 1010_0_parts_GT(EOS(STATIC_1010), i164, i166, i166)
1009_0_parts_GT(EOS(STATIC_1009), i164, matching1, matching2) → 1014_0_parts_ConstantStackPush(EOS(STATIC_1014), i164, 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
1010_0_parts_GT(EOS(STATIC_1010), i164, i166, i166) → 1016_0_parts_Load(EOS(STATIC_1016), i164, i166) | >(i166, 0)
1014_0_parts_ConstantStackPush(EOS(STATIC_1014), i164, matching1) → 1018_0_parts_Return(EOS(STATIC_1018), i164, 0, 0) | =(matching1, 0)
1016_0_parts_Load(EOS(STATIC_1016), i164, i166) → 1020_0_parts_Load(EOS(STATIC_1020), i164, i166, i166)
1020_0_parts_Load(EOS(STATIC_1020), i164, i166, i166) → 1025_0_parts_LE(EOS(STATIC_1025), i164, i166, i166, i164)
1025_0_parts_LE(EOS(STATIC_1025), i164, i166, i166, i164) → 1029_0_parts_LE(EOS(STATIC_1029), i164, i166, i166, i164)
1025_0_parts_LE(EOS(STATIC_1025), i164, i166, i166, i164) → 1030_0_parts_LE(EOS(STATIC_1030), i164, i166, i166, i164)
1029_0_parts_LE(EOS(STATIC_1029), i164, i166, i166, i164) → 1034_0_parts_Load(EOS(STATIC_1034), i164, i166) | <=(i166, i164)
1030_0_parts_LE(EOS(STATIC_1030), i164, i166, i166, i164) → 1036_0_parts_Load(EOS(STATIC_1036), i164, i166) | >(i166, i164)
1034_0_parts_Load(EOS(STATIC_1034), i164, i166) → 1044_0_parts_Load(EOS(STATIC_1044), i164, i166, i164)
1036_0_parts_Load(EOS(STATIC_1036), i164, i166) → 1045_0_parts_Load(EOS(STATIC_1045), i164, i166, i164)
1044_0_parts_Load(EOS(STATIC_1044), i164, i166, i164) → 1048_0_parts_IntArithmetic(EOS(STATIC_1048), i164, i166, i164, i166)
1045_0_parts_Load(EOS(STATIC_1045), i164, i166, i164) → 1050_0_parts_InvokeMethod(EOS(STATIC_1050), i164, i166, i164, i164)
1048_0_parts_IntArithmetic(EOS(STATIC_1048), i164, i166, i164, i166) → 1053_0_parts_Load(EOS(STATIC_1053), i164, i166) | &&(>(i164, 0), >(i166, 0))
1050_0_parts_InvokeMethod(EOS(STATIC_1050), i164, i166, i164, i164) → 1055_1_parts_InvokeMethod(1055_0_parts_Load(EOS(STATIC_1055), i164, i164), i164, i166, i164, i164)
1053_0_parts_Load(EOS(STATIC_1053), i164, i166) → 1058_0_parts_InvokeMethod(EOS(STATIC_1058), i164, i166, i166)
1055_0_parts_Load(EOS(STATIC_1055), i164, i164) → 1059_0_parts_Load(EOS(STATIC_1059), i164, i164)
1055_1_parts_InvokeMethod(1689_0_parts_Return(EOS(STATIC_1689), i768, i768, i723), i768, i166, i768, i768) → 1730_0_parts_Return(EOS(STATIC_1730), i768, i166, i768, i768, i768, i768, i723)
1055_1_parts_InvokeMethod(1749_0_parts_Return(EOS(STATIC_1749), i823, i823, i778), i823, i166, i823, i823) → 1772_0_parts_Return(EOS(STATIC_1772), i823, i166, i823, i823, i823, i823, i778)
1055_1_parts_InvokeMethod(3772_0_parts_Return(EOS(STATIC_3772), i946), i952, i166, i952, i952) → 3777_0_parts_Return(EOS(STATIC_3777), i952, i166, i952, i952, i946)
1058_0_parts_InvokeMethod(EOS(STATIC_1058), i164, i166, i166) → 1063_1_parts_InvokeMethod(1063_0_parts_Load(EOS(STATIC_1063), i166), i164, i166, i166)
1063_0_parts_Load(EOS(STATIC_1063), i166) → 1068_0_parts_Load(EOS(STATIC_1068), i166)
1063_1_parts_InvokeMethod(1004_0_parts_Return(EOS(STATIC_1004), i185, i186, matching1), i164, i186, i186) → 1165_0_parts_Return(EOS(STATIC_1165), i164, i186, i186, i186, 1) | =(matching1, 1)
1063_1_parts_InvokeMethod(1689_0_parts_Return(EOS(STATIC_1689), i770, i771, i723), i164, i771, i771) → 1736_0_parts_Return(EOS(STATIC_1736), i164, i771, i771, i771, i723)
1063_1_parts_InvokeMethod(1749_0_parts_Return(EOS(STATIC_1749), i825, i826, i778), i164, i826, i826) → 1775_0_parts_Return(EOS(STATIC_1775), i164, i826, i826, i826, i778)
1063_1_parts_InvokeMethod(3772_0_parts_Return(EOS(STATIC_3772), i946), i164, i954, i954) → 3778_0_parts_Return(EOS(STATIC_3778), i164, i954, i954, i946)
1165_0_parts_Return(EOS(STATIC_1165), i164, i186, i186, i186, matching1) → 1168_0_parts_Load(EOS(STATIC_1168), i164, i186, 1) | =(matching1, 1)
1168_0_parts_Load(EOS(STATIC_1168), i164, i186, matching1) → 1228_0_parts_Load(EOS(STATIC_1228), i164, i186, 1) | =(matching1, 1)
1221_0_parts_Return(EOS(STATIC_1221), i263, i166, i263, i263, matching1) → 1334_0_parts_Return(EOS(STATIC_1334), i263, i166, i263, i263, 1) | =(matching1, 1)
1222_0_parts_Return(EOS(STATIC_1222), i164, i265, i265, matching1) → 1340_0_parts_Return(EOS(STATIC_1340), i164, i265, i265, 1) | =(matching1, 1)
1228_0_parts_Load(EOS(STATIC_1228), i164, i265, matching1) → 1255_0_parts_Load(EOS(STATIC_1255), i164, i265, 1) | =(matching1, 1)
1244_0_parts_Return(EOS(STATIC_1244), i276, i166, i276, i276, i276, i276, matching1) → 1391_0_parts_Return(EOS(STATIC_1391), i276, i166, i276, i276, i276, i276, 1) | =(matching1, 1)
1246_0_parts_Return(EOS(STATIC_1246), i164, i279, i279, i279, matching1) → 1396_0_parts_Return(EOS(STATIC_1396), i164, i279, i279, i279, 1) | =(matching1, 1)
1255_0_parts_Load(EOS(STATIC_1255), i164, i279, matching1) → 1367_0_parts_Load(EOS(STATIC_1367), i164, i279, 1) | =(matching1, 1)
1334_0_parts_Return(EOS(STATIC_1334), i345, i166, i345, i345, i346) → 1489_0_parts_Return(EOS(STATIC_1489), i345, i166, i345, i345, i346)
1340_0_parts_Return(EOS(STATIC_1340), i164, i357, i357, i358) → 1495_0_parts_Return(EOS(STATIC_1495), i164, i357, i357, i358)
1367_0_parts_Load(EOS(STATIC_1367), i164, i357, i358) → 1411_0_parts_Load(EOS(STATIC_1411), i164, i357, i358)
1391_0_parts_Return(EOS(STATIC_1391), i418, i166, i418, i418, i418, i418, i419) → 1558_0_parts_Return(EOS(STATIC_1558), i418, i166, i418, i418, i418, i418, i419)
1396_0_parts_Return(EOS(STATIC_1396), i164, i429, i429, i429, i431) → 1565_0_parts_Return(EOS(STATIC_1565), i164, i429, i429, i429, i431)
1411_0_parts_Load(EOS(STATIC_1411), i164, i429, i431) → 1529_0_parts_Load(EOS(STATIC_1529), i164, i429, i431)
1489_0_parts_Return(EOS(STATIC_1489), i531, i166, i531, i531, i532) → 1668_0_parts_Return(EOS(STATIC_1668), i531, i166, i531, i531, i532)
1495_0_parts_Return(EOS(STATIC_1495), i164, i543, i543, i544) → 1675_0_parts_Return(EOS(STATIC_1675), i164, i543, i543, i544)
1529_0_parts_Load(EOS(STATIC_1529), i164, i543, i544) → 1582_0_parts_Load(EOS(STATIC_1582), i164, i543, i544)
1558_0_parts_Return(EOS(STATIC_1558), i613, i166, i613, i613, i613, i613, i614) → 1731_0_parts_Return(EOS(STATIC_1731), i613, i166, i613, i613, i613, i613, i614)
1565_0_parts_Return(EOS(STATIC_1565), i164, i624, i624, i624, i626) → 1737_0_parts_Return(EOS(STATIC_1737), i164, i624, i624, i624, i626)
1582_0_parts_Load(EOS(STATIC_1582), i164, i624, i626) → 1692_0_parts_Load(EOS(STATIC_1692), i164, i624, i626)
1668_0_parts_Return(EOS(STATIC_1668), i722, i166, i722, i722, i723) → 1689_0_parts_Return(EOS(STATIC_1689), i722, i166, i723)
1675_0_parts_Return(EOS(STATIC_1675), i164, i732, i732, i733) → 1692_0_parts_Load(EOS(STATIC_1692), i164, i732, i733)
1689_0_parts_Return(EOS(STATIC_1689), i722, i166, i723) → 1749_0_parts_Return(EOS(STATIC_1749), i722, i166, i723)
1692_0_parts_Load(EOS(STATIC_1692), i164, i732, i733) → 1752_0_parts_Load(EOS(STATIC_1752), i164, i732, i733)
1730_0_parts_Return(EOS(STATIC_1730), i768, i166, i768, i768, i768, i768, i723) → 1731_0_parts_Return(EOS(STATIC_1731), i768, i166, i768, i768, i768, i768, i723)
1731_0_parts_Return(EOS(STATIC_1731), i777, i166, i777, i777, i777, i777, i778) → 1749_0_parts_Return(EOS(STATIC_1749), i777, i166, i778)
1736_0_parts_Return(EOS(STATIC_1736), i164, i771, i771, i771, i723) → 1737_0_parts_Return(EOS(STATIC_1737), i164, i771, i771, i771, i723)
1737_0_parts_Return(EOS(STATIC_1737), i164, i788, i788, i788, i790) → 1752_0_parts_Load(EOS(STATIC_1752), i164, i788, i790)
1752_0_parts_Load(EOS(STATIC_1752), i164, i788, i790) → 1757_0_parts_Load(EOS(STATIC_1757), i788, i790, i164)
1757_0_parts_Load(EOS(STATIC_1757), i788, i790, i164) → 1767_0_parts_ConstantStackPush(EOS(STATIC_1767), i790, i164, i788)
1767_0_parts_ConstantStackPush(EOS(STATIC_1767), i790, i164, i788) → 1779_0_parts_IntArithmetic(EOS(STATIC_1779), i790, i164, i788)
1772_0_parts_Return(EOS(STATIC_1772), i823, i166, i823, i823, i823, i823, i778) → 1731_0_parts_Return(EOS(STATIC_1731), i823, i166, i823, i823, i823, i823, i778)
1775_0_parts_Return(EOS(STATIC_1775), i164, i826, i826, i826, i778) → 1737_0_parts_Return(EOS(STATIC_1737), i164, i826, i826, i826, i778)
1779_0_parts_IntArithmetic(EOS(STATIC_1779), i790, i164, i788) → 1784_0_parts_InvokeMethod(EOS(STATIC_1784), i790, i164) | >(i788, 0)
1784_0_parts_InvokeMethod(EOS(STATIC_1784), i790, i164) → 1786_1_parts_InvokeMethod(1786_0_parts_Load(EOS(STATIC_1786), i164), i790, i164)
1786_0_parts_Load(EOS(STATIC_1786), i164) → 1788_0_parts_Load(EOS(STATIC_1788), i164)
1786_1_parts_InvokeMethod(1018_0_parts_Return(EOS(STATIC_1018), i844, matching1, matching2), i790, i844) → 1800_0_parts_Return(EOS(STATIC_1800), i790, i844, 0, i844, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1786_1_parts_InvokeMethod(1689_0_parts_Return(EOS(STATIC_1689), i845, i846, i723), i790, i845) → 1801_0_parts_Return(EOS(STATIC_1801), i790, i845, i845, i723)
1786_1_parts_InvokeMethod(1749_0_parts_Return(EOS(STATIC_1749), i847, i848, i778), i790, i847) → 1804_0_parts_Return(EOS(STATIC_1804), i790, i847, i847, i778)
1786_1_parts_InvokeMethod(3772_0_parts_Return(EOS(STATIC_3772), i946), i790, i958) → 3781_0_parts_Return(EOS(STATIC_3781), i790, i958, i946)
1800_0_parts_Return(EOS(STATIC_1800), i790, i844, matching1, i844, matching2, matching3) → 1805_0_parts_IntArithmetic(EOS(STATIC_1805), i790, 0) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
1801_0_parts_Return(EOS(STATIC_1801), i790, i845, i845, i723) → 1807_0_parts_IntArithmetic(EOS(STATIC_1807), i790, i723)
1804_0_parts_Return(EOS(STATIC_1804), i790, i847, i847, i778) → 1801_0_parts_Return(EOS(STATIC_1801), i790, i847, i847, i778)
1805_0_parts_IntArithmetic(EOS(STATIC_1805), i790, matching1) → 1807_0_parts_IntArithmetic(EOS(STATIC_1807), i790, 0) | =(matching1, 0)
1807_0_parts_IntArithmetic(EOS(STATIC_1807), i790, i723) → 3771_0_parts_IntArithmetic(EOS(STATIC_3771), i790, i723)
1832_0_parts_Return(EOS(STATIC_1832), i790, i870, i858) → 3771_0_parts_IntArithmetic(EOS(STATIC_3771), i790, i858)
3771_0_parts_IntArithmetic(EOS(STATIC_3771), i790, i858) → 3772_0_parts_Return(EOS(STATIC_3772), +(i790, i858))
3777_0_parts_Return(EOS(STATIC_3777), i952, i166, i952, i952, i946) → 1668_0_parts_Return(EOS(STATIC_1668), i952, i166, i952, i952, i946)
3778_0_parts_Return(EOS(STATIC_3778), i164, i954, i954, i946) → 1675_0_parts_Return(EOS(STATIC_1675), i164, i954, i954, i946)
3781_0_parts_Return(EOS(STATIC_3781), i790, i958, i946) → 1832_0_parts_Return(EOS(STATIC_1832), i790, i958, i946)

Combined rules. Obtained 7 conditional rules for P and 16 conditional rules for R.


P rules:
1056_0_main_GT(EOS(STATIC_1056), java.lang.Object(ARRAY(x0)), x1, x2, x2, x0) → 1056_0_main_GT(EOS(STATIC_1056), java.lang.Object(ARRAY(x0)), +(x1, 1), 0, 0, x0) | &&(&&(>(x2, x0), >(+(x0, 1), 0)), >=(x0, +(x1, 1)))
1056_0_main_GT(EOS(STATIC_1056), java.lang.Object(ARRAY(x0)), x1, x2, x2, x0) → 1163_1_main_InvokeMethod(1163_0_parts_Load(EOS(STATIC_1163), x1, x2), java.lang.Object(ARRAY(x0)), x1, x2, x1, x2) | <=(x2, x0)
1163_1_main_InvokeMethod(1004_0_parts_Return(EOS(STATIC_1004), x0, x1, 1), java.lang.Object(ARRAY(x3)), x0, x1, x0, x1) → 1056_0_main_GT(EOS(STATIC_1056), java.lang.Object(ARRAY(x3)), x0, +(x1, 1), +(x1, 1), x3) | &&(>(+(x3, 1), 0), >(+(x1, 1), 0))
1163_1_main_InvokeMethod(1018_0_parts_Return(EOS(STATIC_1018), x0, 0, 0), java.lang.Object(ARRAY(x3)), x0, 0, x0, 0) → 1056_0_main_GT(EOS(STATIC_1056), java.lang.Object(ARRAY(x3)), x0, 1, 1, x3) | >(+(x3, 1), 0)
1163_1_main_InvokeMethod(1689_0_parts_Return(EOS(STATIC_1689), x0, x1, x2), java.lang.Object(ARRAY(x3)), x0, x1, x0, x1) → 1056_0_main_GT(EOS(STATIC_1056), java.lang.Object(ARRAY(x3)), x0, +(x1, 1), +(x1, 1), x3) | &&(>(+(x3, 1), 0), >(x1, 0))
1163_1_main_InvokeMethod(1749_0_parts_Return(EOS(STATIC_1749), x0, x1, x2), java.lang.Object(ARRAY(x3)), x0, x1, x0, x1) → 1056_0_main_GT(EOS(STATIC_1056), java.lang.Object(ARRAY(x3)), x0, +(x1, 1), +(x1, 1), x3) | &&(>(+(x3, 1), 0), >(x1, 0))
1163_1_main_InvokeMethod(3772_0_parts_Return(EOS(STATIC_3772), x0), java.lang.Object(ARRAY(x1)), x2, x3, x2, x3) → 1056_0_main_GT(EOS(STATIC_1056), java.lang.Object(ARRAY(x1)), x2, +(x3, 1), +(x3, 1), x1) | &&(>(x3, 0), >(+(x1, 1), 0))
R rules:
1163_0_parts_Load(EOS(STATIC_1163), x0, x1) → 997_0_parts_GT(EOS(STATIC_997), x0, x1, x0)
997_0_parts_GT(EOS(STATIC_997), x0, x1, x0) → 1004_0_parts_Return(EOS(STATIC_1004), x0, x1, 1) | <=(x0, 0)
997_0_parts_GT(EOS(STATIC_997), x0, 0, x0) → 1018_0_parts_Return(EOS(STATIC_1018), x0, 0, 0) | >(x0, 0)
997_0_parts_GT(EOS(STATIC_997), x0, x1, x0) → 1055_1_parts_InvokeMethod(997_0_parts_GT(EOS(STATIC_997), x0, x0, x0), x0, x1, x0, x0) | &&(&&(>(x1, x0), >(x1, 0)), >(x0, 0))
997_0_parts_GT(EOS(STATIC_997), x0, x1, x0) → 1063_1_parts_InvokeMethod(997_0_parts_GT(EOS(STATIC_997), x2, x1, x2), x0, x1, x1) | &&(&&(>(x1, 0), <=(x1, x0)), >(x0, 0))
1055_1_parts_InvokeMethod(1689_0_parts_Return(EOS(STATIC_1689), x0, x0, x1), x0, x2, x0, x0) → 1749_0_parts_Return(EOS(STATIC_1749), x0, x2, x1)
1055_1_parts_InvokeMethod(1749_0_parts_Return(EOS(STATIC_1749), x0, x0, x1), x0, x2, x0, x0) → 1749_0_parts_Return(EOS(STATIC_1749), x0, x2, x1)
1055_1_parts_InvokeMethod(3772_0_parts_Return(EOS(STATIC_3772), x0), x1, x2, x1, x1) → 1749_0_parts_Return(EOS(STATIC_1749), x1, x2, x0)
1063_1_parts_InvokeMethod(1689_0_parts_Return(EOS(STATIC_1689), x0, x1, x2), x3, x1, x1) → 1786_1_parts_InvokeMethod(997_0_parts_GT(EOS(STATIC_997), x3, x4, x3), x2, x3) | >(x1, 0)
1063_1_parts_InvokeMethod(1749_0_parts_Return(EOS(STATIC_1749), x0, x1, x2), x3, x1, x1) → 1786_1_parts_InvokeMethod(997_0_parts_GT(EOS(STATIC_997), x3, x4, x3), x2, x3) | >(x1, 0)
1063_1_parts_InvokeMethod(3772_0_parts_Return(EOS(STATIC_3772), x0), x1, x2, x2) → 1786_1_parts_InvokeMethod(997_0_parts_GT(EOS(STATIC_997), x1, x3, x1), x0, x1) | >(x2, 0)
1063_1_parts_InvokeMethod(1004_0_parts_Return(EOS(STATIC_1004), x0, x1, 1), x3, x1, x1) → 1786_1_parts_InvokeMethod(997_0_parts_GT(EOS(STATIC_997), x3, x4, x3), 1, x3) | >(x1, 0)
1786_1_parts_InvokeMethod(1689_0_parts_Return(EOS(STATIC_1689), x0, x1, x2), x3, x0) → 3772_0_parts_Return(EOS(STATIC_3772), +(x3, x2))
1786_1_parts_InvokeMethod(1749_0_parts_Return(EOS(STATIC_1749), x0, x1, x2), x3, x0) → 3772_0_parts_Return(EOS(STATIC_3772), +(x3, x2))
1786_1_parts_InvokeMethod(1018_0_parts_Return(EOS(STATIC_1018), x0, 0, 0), arith[1], x0) → 3772_0_parts_Return(EOS(STATIC_3772), arith[1])
1786_1_parts_InvokeMethod(3772_0_parts_Return(EOS(STATIC_3772), x0), x1, x2) → 3772_0_parts_Return(EOS(STATIC_3772), +(x1, x0))

Filtered ground terms:



1056_0_main_GT(x1, x2, x3, x4, x5, x6) → 1056_0_main_GT(x2, x3, x4, x5, x6)
3772_0_parts_Return(x1, x2) → 3772_0_parts_Return(x2)
1749_0_parts_Return(x1, x2, x3, x4) → 1749_0_parts_Return(x2, x3, x4)
1689_0_parts_Return(x1, x2, x3, x4) → 1689_0_parts_Return(x2, x3, x4)
Cond_1163_1_main_InvokeMethod1(x1, x2, x3, x4, x5, x6, x7) → Cond_1163_1_main_InvokeMethod1(x1, x2, x3, x4, x6)
1018_0_parts_Return(x1, x2, x3, x4) → 1018_0_parts_Return(x2)
1004_0_parts_Return(x1, x2, x3, x4) → 1004_0_parts_Return(x2, x3)
1163_0_parts_Load(x1, x2, x3) → 1163_0_parts_Load(x2, x3)
Cond_1056_0_main_GT1(x1, x2, x3, x4, x5, x6, x7) → Cond_1056_0_main_GT1(x1, x3, x4, x5, x6, x7)
Cond_1056_0_main_GT(x1, x2, x3, x4, x5, x6, x7) → Cond_1056_0_main_GT(x1, x3, x4, x5, x6, x7)
997_0_parts_GT(x1, x2, x3, x4) → 997_0_parts_GT(x2, x3, x4)
Cond_997_0_parts_GT3(x1, x2, x3, x4, x5, x6) → Cond_997_0_parts_GT3(x1, x3, x4, x5, x6)
Cond_997_0_parts_GT2(x1, x2, x3, x4, x5) → Cond_997_0_parts_GT2(x1, x3, x4, x5)
Cond_997_0_parts_GT1(x1, x2, x3, x4, x5) → Cond_997_0_parts_GT1(x1, x3, x5)
Cond_997_0_parts_GT(x1, x2, x3, x4, x5) → Cond_997_0_parts_GT(x1, x3, x4, x5)

Filtered duplicate args:



1056_0_main_GT(x1, x2, x3, x4, x5) → 1056_0_main_GT(x1, x2, x4)
Cond_1056_0_main_GT(x1, x2, x3, x4, x5, x6) → Cond_1056_0_main_GT(x1, x2, x3, x5)
Cond_1056_0_main_GT1(x1, x2, x3, x4, x5, x6) → Cond_1056_0_main_GT1(x1, x2, x3, x5)
1163_1_main_InvokeMethod(x1, x2, x3, x4, x5, x6) → 1163_1_main_InvokeMethod(x1, x2, x5, x6)
Cond_1163_1_main_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) → Cond_1163_1_main_InvokeMethod(x1, x2, x3)
Cond_1163_1_main_InvokeMethod1(x1, x2, x3, x4, x5) → Cond_1163_1_main_InvokeMethod1(x1, x2, x3)
Cond_1163_1_main_InvokeMethod2(x1, x2, x3, x4, x5, x6, x7) → Cond_1163_1_main_InvokeMethod2(x1, x2, x3)
Cond_1163_1_main_InvokeMethod3(x1, x2, x3, x4, x5, x6, x7) → Cond_1163_1_main_InvokeMethod3(x1, x2, x3)
Cond_1163_1_main_InvokeMethod4(x1, x2, x3, x4, x5, x6, x7) → Cond_1163_1_main_InvokeMethod4(x1, x2, x3, x6, x7)
997_0_parts_GT(x1, x2, x3) → 997_0_parts_GT(x2, x3)
Cond_997_0_parts_GT(x1, x2, x3, x4) → Cond_997_0_parts_GT(x1, x3, x4)
Cond_997_0_parts_GT1(x1, x2, x3) → Cond_997_0_parts_GT1(x1, x3)
Cond_997_0_parts_GT2(x1, x2, x3, x4) → Cond_997_0_parts_GT2(x1, x3, x4)
1055_1_parts_InvokeMethod(x1, x2, x3, x4, x5) → 1055_1_parts_InvokeMethod(x1, x3, x5)
Cond_997_0_parts_GT3(x1, x2, x3, x4, x5) → Cond_997_0_parts_GT3(x1, x3, x4, x5)
1063_1_parts_InvokeMethod(x1, x2, x3, x4) → 1063_1_parts_InvokeMethod(x1, x2, x4)
Cond_1063_1_parts_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1063_1_parts_InvokeMethod(x1, x2, x3, x6)
Cond_1063_1_parts_InvokeMethod1(x1, x2, x3, x4, x5, x6) → Cond_1063_1_parts_InvokeMethod1(x1, x2, x3, x6)
Cond_1063_1_parts_InvokeMethod2(x1, x2, x3, x4, x5, x6) → Cond_1063_1_parts_InvokeMethod2(x1, x2, x3, x5, x6)
Cond_1063_1_parts_InvokeMethod3(x1, x2, x3, x4, x5, x6) → Cond_1063_1_parts_InvokeMethod3(x1, x2, x3, x6)

Filtered unneeded arguments:



Cond_1056_0_main_GT(x1, x2, x3, x4) → Cond_1056_0_main_GT(x1, x2, x3)
Cond_1163_1_main_InvokeMethod4(x1, x2, x3, x4, x5) → Cond_1163_1_main_InvokeMethod4(x1, x3, x4, x5)
1689_0_parts_Return(x1, x2, x3) → 1689_0_parts_Return(x1, x2)
1749_0_parts_Return(x1, x2, x3) → 1749_0_parts_Return(x1, x2)
Cond_1063_1_parts_InvokeMethod(x1, x2, x3, x4) → Cond_1063_1_parts_InvokeMethod(x1, x3, x4)
1786_1_parts_InvokeMethod(x1, x2, x3) → 1786_1_parts_InvokeMethod(x1, x3)
Cond_1063_1_parts_InvokeMethod1(x1, x2, x3, x4) → Cond_1063_1_parts_InvokeMethod1(x1, x3, x4)
Cond_1063_1_parts_InvokeMethod2(x1, x2, x3, x4, x5) → Cond_1063_1_parts_InvokeMethod2(x1, x3, x5)
Cond_1063_1_parts_InvokeMethod3(x1, x2, x3, x4) → Cond_1063_1_parts_InvokeMethod3(x1, x3, x4)

Combined rules. Obtained 7 conditional rules for P and 16 conditional rules for R.


P rules:
1056_0_main_GT(java.lang.Object(ARRAY(x0)), x1, x2) → 1056_0_main_GT(java.lang.Object(ARRAY(x0)), +(x1, 1), 0) | &&(&&(>(x2, x0), >=(x0, +(x1, 1))), >(x0, -1))
1056_0_main_GT(java.lang.Object(ARRAY(x0)), x1, x2) → 1163_1_main_InvokeMethod(1163_0_parts_Load(x1, x2), java.lang.Object(ARRAY(x0)), x1, x2) | <=(x2, x0)
1163_1_main_InvokeMethod(1004_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → 1056_0_main_GT(java.lang.Object(ARRAY(x3)), x0, +(x1, 1)) | &&(>(x3, -1), >(x1, -1))
1163_1_main_InvokeMethod(1018_0_parts_Return(x0), java.lang.Object(ARRAY(x3)), x0, 0) → 1056_0_main_GT(java.lang.Object(ARRAY(x3)), x0, 1) | >(x3, -1)
1163_1_main_InvokeMethod(1689_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → 1056_0_main_GT(java.lang.Object(ARRAY(x3)), x0, +(x1, 1)) | &&(>(x3, -1), >(x1, 0))
1163_1_main_InvokeMethod(1749_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → 1056_0_main_GT(java.lang.Object(ARRAY(x3)), x0, +(x1, 1)) | &&(>(x3, -1), >(x1, 0))
1163_1_main_InvokeMethod(3772_0_parts_Return(x0), java.lang.Object(ARRAY(x1)), x2, x3) → 1056_0_main_GT(java.lang.Object(ARRAY(x1)), x2, +(x3, 1)) | &&(>(x3, 0), >(x1, -1))
R rules:
1163_0_parts_Load(x0, x1) → 997_0_parts_GT(x1, x0)
997_0_parts_GT(x1, x0) → 1004_0_parts_Return(x0, x1) | <=(x0, 0)
997_0_parts_GT(0, x0) → 1018_0_parts_Return(x0) | >(x0, 0)
997_0_parts_GT(x1, x0) → 1055_1_parts_InvokeMethod(997_0_parts_GT(x0, x0), x1, x0) | &&(&&(>(x1, x0), >(x1, 0)), >(x0, 0))
997_0_parts_GT(x1, x0) → 1063_1_parts_InvokeMethod(997_0_parts_GT(x1, x2), x0, x1) | &&(&&(>(x1, 0), <=(x1, x0)), >(x0, 0))
1055_1_parts_InvokeMethod(1689_0_parts_Return(x0, x0), x2, x0) → 1749_0_parts_Return(x0, x2)
1055_1_parts_InvokeMethod(1749_0_parts_Return(x0, x0), x2, x0) → 1749_0_parts_Return(x0, x2)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2, x1) → 1749_0_parts_Return(x1, x2)
1063_1_parts_InvokeMethod(1689_0_parts_Return(x0, x1), x3, x1) → 1786_1_parts_InvokeMethod(997_0_parts_GT(x4, x3), x3) | >(x1, 0)
1063_1_parts_InvokeMethod(1749_0_parts_Return(x0, x1), x3, x1) → 1786_1_parts_InvokeMethod(997_0_parts_GT(x4, x3), x3) | >(x1, 0)
1063_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2) → 1786_1_parts_InvokeMethod(997_0_parts_GT(x3, x1), x1) | >(x2, 0)
1063_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x3, x1) → 1786_1_parts_InvokeMethod(997_0_parts_GT(x4, x3), x3) | >(x1, 0)
1786_1_parts_InvokeMethod(1689_0_parts_Return(x0, x1), x0) → 3772_0_parts_Return(+(x3, x2))
1786_1_parts_InvokeMethod(1749_0_parts_Return(x0, x1), x0) → 3772_0_parts_Return(+(x3, x2))
1786_1_parts_InvokeMethod(1018_0_parts_Return(x0), x0) → 3772_0_parts_Return(arith[1])
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2) → 3772_0_parts_Return(+(x1, x0))

Performed bisimulation on rules. Used the following equivalence classes: {[1004_0_parts_Return_2, 1689_0_parts_Return_2, 1749_0_parts_Return_2]=1004_0_parts_Return_2, [Cond_1163_1_main_InvokeMethod2_5, Cond_1163_1_main_InvokeMethod3_5]=Cond_1163_1_main_InvokeMethod2_5, [Cond_1063_1_parts_InvokeMethod_5, Cond_1063_1_parts_InvokeMethod1_5, Cond_1063_1_parts_InvokeMethod3_5]=Cond_1063_1_parts_InvokeMethod_5}


Finished conversion. Obtained 12 rules for P and 18 rules for R. System has predefined symbols.


P rules:
1056_0_MAIN_GT(java.lang.Object(ARRAY(x0)), x1, x2) → COND_1056_0_MAIN_GT(&&(&&(>(x2, x0), >=(x0, +(x1, 1))), >(x0, -1)), java.lang.Object(ARRAY(x0)), x1, x2)
COND_1056_0_MAIN_GT(TRUE, java.lang.Object(ARRAY(x0)), x1, x2) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0)), +(x1, 1), 0)
1056_0_MAIN_GT(java.lang.Object(ARRAY(x0)), x1, x2) → COND_1056_0_MAIN_GT1(<=(x2, x0), java.lang.Object(ARRAY(x0)), x1, x2)
COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0)), x1, x2) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1, x2), java.lang.Object(ARRAY(x0)), x1, x2)
1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3, -1), >(x1, -1)), 1004_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1)
COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3)), x0, +(x1, 1))
1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0), java.lang.Object(ARRAY(x3)), x0, 0) → COND_1163_1_MAIN_INVOKEMETHOD1(>(x3, -1), 1018_0_parts_Return(x0), java.lang.Object(ARRAY(x3)), x0, 0)
COND_1163_1_MAIN_INVOKEMETHOD1(TRUE, 1018_0_parts_Return(x0), java.lang.Object(ARRAY(x3)), x0, 0) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3)), x0, 1)
1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3, -1), >(x1, 0)), 1004_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1)
COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3)), x0, +(x1, 1))
1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0), java.lang.Object(ARRAY(x1)), x2, x3) → COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3, 0), >(x1, -1)), 3772_0_parts_Return(x0), java.lang.Object(ARRAY(x1)), x2, x3)
COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0), java.lang.Object(ARRAY(x1)), x2, x3) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1)), x2, +(x3, 1))
R rules:
1163_0_parts_Load(x0, x1) → 997_0_parts_GT(x1, x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT(<=(x0, 0), x1, x0)
Cond_997_0_parts_GT(TRUE, x1, x0) → 1004_0_parts_Return(x0, x1)
997_0_parts_GT(0, x0) → Cond_997_0_parts_GT1(>(x0, 0), 0, x0)
Cond_997_0_parts_GT1(TRUE, 0, x0) → 1018_0_parts_Return(x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT2(&&(&&(>(x1, x0), >(x1, 0)), >(x0, 0)), x1, x0)
Cond_997_0_parts_GT2(TRUE, x1, x0) → 1055_1_parts_InvokeMethod(997_0_parts_GT(x0, x0), x1, x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT3(&&(&&(>(x1, 0), <=(x1, x0)), >(x0, 0)), x1, x0, x2)
Cond_997_0_parts_GT3(TRUE, x1, x0, x2) → 1063_1_parts_InvokeMethod(997_0_parts_GT(x1, x2), x0, x1)
1055_1_parts_InvokeMethod(1004_0_parts_Return(x0, x0), x2, x0) → 1004_0_parts_Return(x0, x2)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2, x1) → 1004_0_parts_Return(x1, x2)
1063_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x3, x1) → Cond_1063_1_parts_InvokeMethod(>(x1, 0), 1004_0_parts_Return(x0, x1), x3, x1, x4)
Cond_1063_1_parts_InvokeMethod(TRUE, 1004_0_parts_Return(x0, x1), x3, x1, x4) → 1786_1_parts_InvokeMethod(997_0_parts_GT(x4, x3), x3)
1063_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2) → Cond_1063_1_parts_InvokeMethod2(>(x2, 0), 3772_0_parts_Return(x0), x1, x2, x3)
Cond_1063_1_parts_InvokeMethod2(TRUE, 3772_0_parts_Return(x0), x1, x2, x3) → 1786_1_parts_InvokeMethod(997_0_parts_GT(x3, x1), x1)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x0) → 3772_0_parts_Return(+(x3, x2))
1786_1_parts_InvokeMethod(1018_0_parts_Return(x0), x0) → 3772_0_parts_Return(arith[1])
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2) → 3772_0_parts_Return(+(x1, x0))

(26) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
1163_0_parts_Load(x0, x1) → 997_0_parts_GT(x1, x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT(x0 <= 0, x1, x0)
Cond_997_0_parts_GT(TRUE, x1, x0) → 1004_0_parts_Return(x0, x1)
997_0_parts_GT(0, x0) → Cond_997_0_parts_GT1(x0 > 0, 0, x0)
Cond_997_0_parts_GT1(TRUE, 0, x0) → 1018_0_parts_Return(x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT2(x1 > x0 && x1 > 0 && x0 > 0, x1, x0)
Cond_997_0_parts_GT2(TRUE, x1, x0) → 1055_1_parts_InvokeMethod(997_0_parts_GT(x0, x0), x1, x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT3(x1 > 0 && x1 <= x0 && x0 > 0, x1, x0, x2)
Cond_997_0_parts_GT3(TRUE, x1, x0, x2) → 1063_1_parts_InvokeMethod(997_0_parts_GT(x1, x2), x0, x1)
1055_1_parts_InvokeMethod(1004_0_parts_Return(x0, x0), x2, x0) → 1004_0_parts_Return(x0, x2)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2, x1) → 1004_0_parts_Return(x1, x2)
1063_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x3, x1) → Cond_1063_1_parts_InvokeMethod(x1 > 0, 1004_0_parts_Return(x0, x1), x3, x1, x4)
Cond_1063_1_parts_InvokeMethod(TRUE, 1004_0_parts_Return(x0, x1), x3, x1, x4) → 1786_1_parts_InvokeMethod(997_0_parts_GT(x4, x3), x3)
1063_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2) → Cond_1063_1_parts_InvokeMethod2(x2 > 0, 3772_0_parts_Return(x0), x1, x2, x3)
Cond_1063_1_parts_InvokeMethod2(TRUE, 3772_0_parts_Return(x0), x1, x2, x3) → 1786_1_parts_InvokeMethod(997_0_parts_GT(x3, x1), x1)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x0) → 3772_0_parts_Return(x3 + x2)
1786_1_parts_InvokeMethod(1018_0_parts_Return(x0), x0) → 3772_0_parts_Return(arith[1])
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2) → 3772_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(0): 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[0])), x1[0], x2[0]) → COND_1056_0_MAIN_GT(x2[0] > x0[0] && x0[0] >= x1[0] + 1 && x0[0] > -1, java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])
(1): COND_1056_0_MAIN_GT(TRUE, java.lang.Object(ARRAY(x0[1])), x1[1], x2[1]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[1])), x1[1] + 1, 0)
(2): 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1056_0_MAIN_GT1(x2[2] <= x0[2], java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
(3): COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
(4): 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_1163_1_MAIN_INVOKEMETHOD(x3[4] > -1 && x1[4] > -1, 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
(5): COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], x1[5] + 1)
(6): 1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_1163_1_MAIN_INVOKEMETHOD1(x3[6] > -1, 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)
(7): COND_1163_1_MAIN_INVOKEMETHOD1(TRUE, 1018_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)
(8): 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_1163_1_MAIN_INVOKEMETHOD2(x3[8] > -1 && x1[8] > 0, 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
(9): COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], x1[9] + 1)
(10): 1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_1163_1_MAIN_INVOKEMETHOD4(x3[10] > 0 && x1[10] > -1, 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
(11): COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], x3[11] + 1)

(0) -> (1), if (x2[0] > x0[0] && x0[0] >= x1[0] + 1 && x0[0] > -1java.lang.Object(ARRAY(x0[0])) →* java.lang.Object(ARRAY(x0[1]))∧x1[0]* x1[1]x2[0]* x2[1])


(1) -> (0), if (java.lang.Object(ARRAY(x0[1])) →* java.lang.Object(ARRAY(x0[0]))∧x1[1] + 1* x1[0]0* x2[0])


(1) -> (2), if (java.lang.Object(ARRAY(x0[1])) →* java.lang.Object(ARRAY(x0[2]))∧x1[1] + 1* x1[2]0* x2[2])


(2) -> (3), if (x2[2] <= x0[2]java.lang.Object(ARRAY(x0[2])) →* java.lang.Object(ARRAY(x0[3]))∧x1[2]* x1[3]x2[2]* x2[3])


(3) -> (4), if (1163_0_parts_Load(x1[3], x2[3]) →* 1004_0_parts_Return(x0[4], x1[4])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[4]))∧x1[3]* x0[4]x2[3]* x1[4])


(3) -> (6), if (1163_0_parts_Load(x1[3], x2[3]) →* 1018_0_parts_Return(x0[6])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[6]))∧x1[3]* x0[6]x2[3]* 0)


(3) -> (8), if (1163_0_parts_Load(x1[3], x2[3]) →* 1004_0_parts_Return(x0[8], x1[8])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[8]))∧x1[3]* x0[8]x2[3]* x1[8])


(3) -> (10), if (1163_0_parts_Load(x1[3], x2[3]) →* 3772_0_parts_Return(x0[10])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x1[10]))∧x1[3]* x2[10]x2[3]* x3[10])


(4) -> (5), if (x3[4] > -1 && x1[4] > -11004_0_parts_Return(x0[4], x1[4]) →* 1004_0_parts_Return(x0[5], x1[5])∧java.lang.Object(ARRAY(x3[4])) →* java.lang.Object(ARRAY(x3[5]))∧x0[4]* x0[5]x1[4]* x1[5])


(5) -> (0), if (java.lang.Object(ARRAY(x3[5])) →* java.lang.Object(ARRAY(x0[0]))∧x0[5]* x1[0]x1[5] + 1* x2[0])


(5) -> (2), if (java.lang.Object(ARRAY(x3[5])) →* java.lang.Object(ARRAY(x0[2]))∧x0[5]* x1[2]x1[5] + 1* x2[2])


(6) -> (7), if (x3[6] > -11018_0_parts_Return(x0[6]) →* 1018_0_parts_Return(x0[7])∧java.lang.Object(ARRAY(x3[6])) →* java.lang.Object(ARRAY(x3[7]))∧x0[6]* x0[7])


(7) -> (0), if (java.lang.Object(ARRAY(x3[7])) →* java.lang.Object(ARRAY(x0[0]))∧x0[7]* x1[0]1* x2[0])


(7) -> (2), if (java.lang.Object(ARRAY(x3[7])) →* java.lang.Object(ARRAY(x0[2]))∧x0[7]* x1[2]1* x2[2])


(8) -> (9), if (x3[8] > -1 && x1[8] > 01004_0_parts_Return(x0[8], x1[8]) →* 1004_0_parts_Return(x0[9], x1[9])∧java.lang.Object(ARRAY(x3[8])) →* java.lang.Object(ARRAY(x3[9]))∧x0[8]* x0[9]x1[8]* x1[9])


(9) -> (0), if (java.lang.Object(ARRAY(x3[9])) →* java.lang.Object(ARRAY(x0[0]))∧x0[9]* x1[0]x1[9] + 1* x2[0])


(9) -> (2), if (java.lang.Object(ARRAY(x3[9])) →* java.lang.Object(ARRAY(x0[2]))∧x0[9]* x1[2]x1[9] + 1* x2[2])


(10) -> (11), if (x3[10] > 0 && x1[10] > -13772_0_parts_Return(x0[10]) →* 3772_0_parts_Return(x0[11])∧java.lang.Object(ARRAY(x1[10])) →* java.lang.Object(ARRAY(x1[11]))∧x2[10]* x2[11]x3[10]* x3[11])


(11) -> (0), if (java.lang.Object(ARRAY(x1[11])) →* java.lang.Object(ARRAY(x0[0]))∧x2[11]* x1[0]x3[11] + 1* x2[0])


(11) -> (2), if (java.lang.Object(ARRAY(x1[11])) →* java.lang.Object(ARRAY(x0[2]))∧x2[11]* x1[2]x3[11] + 1* x2[2])



The set Q consists of the following terms:
1163_0_parts_Load(x0, x1)
997_0_parts_GT(x0, x1)
Cond_997_0_parts_GT(TRUE, x0, x1)
Cond_997_0_parts_GT1(TRUE, 0, x0)
Cond_997_0_parts_GT2(TRUE, x0, x1)
Cond_997_0_parts_GT3(TRUE, x0, x1, x2)
1055_1_parts_InvokeMethod(1004_0_parts_Return(x0, x0), x1, x0)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
1063_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x2, x1)
Cond_1063_1_parts_InvokeMethod(TRUE, 1004_0_parts_Return(x0, x1), x2, x1, x3)
1063_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
Cond_1063_1_parts_InvokeMethod2(TRUE, 3772_0_parts_Return(x0), x1, x2, x3)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x0)
1786_1_parts_InvokeMethod(1018_0_parts_Return(x0), x0)
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1)

(27) IDPNonInfProof (SOUND transformation)

Used the following options for this NonInfProof:
IDPGPoloSolver: Range: [(-1,2)] IsNat: false Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpCand1ShapeHeuristic@5575b290 Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 0 Max Right Steps: 0

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0)), x1, x2) → COND_1056_0_MAIN_GT(&&(&&(>(x2, x0), >=(x0, +(x1, 1))), >(x0, -1)), java.lang.Object(ARRAY(x0)), x1, x2) the following chains were created:
  • We consider the chain 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[0])), x1[0], x2[0]) → COND_1056_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0]), COND_1056_0_MAIN_GT(TRUE, java.lang.Object(ARRAY(x0[1])), x1[1], x2[1]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[1])), +(x1[1], 1), 0) which results in the following constraint:

    (1)    (&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1))=TRUEjava.lang.Object(ARRAY(x0[0]))=java.lang.Object(ARRAY(x0[1]))∧x1[0]=x1[1]x2[0]=x2[1]1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])≥NonInfC∧1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])≥COND_1056_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])∧(UIncreasing(COND_1056_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])), ≥))



    We simplified constraint (1) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (2)    (>(x0[0], -1)=TRUE>(x2[0], x0[0])=TRUE>=(x0[0], +(x1[0], 1))=TRUE1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])≥NonInfC∧1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])≥COND_1056_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])∧(UIncreasing(COND_1056_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (x0[0] ≥ 0∧x2[0] + [-1] + [-1]x0[0] ≥ 0∧x0[0] + [-1] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])), ≥)∧[(-1)bni_38 + (-1)Bound*bni_38] + [(-1)bni_38]x1[0] + [(2)bni_38]x0[0] ≥ 0∧[(-1)bso_39] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (x0[0] ≥ 0∧x2[0] + [-1] + [-1]x0[0] ≥ 0∧x0[0] + [-1] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])), ≥)∧[(-1)bni_38 + (-1)Bound*bni_38] + [(-1)bni_38]x1[0] + [(2)bni_38]x0[0] ≥ 0∧[(-1)bso_39] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (x0[0] ≥ 0∧x2[0] + [-1] + [-1]x0[0] ≥ 0∧x0[0] + [-1] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])), ≥)∧[(-1)bni_38 + (-1)Bound*bni_38] + [(-1)bni_38]x1[0] + [(2)bni_38]x0[0] ≥ 0∧[(-1)bso_39] ≥ 0)



    We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (6)    (x0[0] ≥ 0∧x2[0] ≥ 0∧x0[0] + [-1] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])), ≥)∧[(-1)bni_38 + (-1)Bound*bni_38] + [(2)bni_38]x0[0] + [(-1)bni_38]x1[0] ≥ 0∧[(-1)bso_39] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (7)    (x0[0] ≥ 0∧x2[0] ≥ 0∧x0[0] + [-1] + [-1]x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])), ≥)∧[(-1)bni_38 + (-1)Bound*bni_38] + [(2)bni_38]x0[0] + [(-1)bni_38]x1[0] ≥ 0∧[(-1)bso_39] ≥ 0)


    (8)    (x0[0] ≥ 0∧x2[0] ≥ 0∧x0[0] + [-1] + x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])), ≥)∧[(-1)bni_38 + (-1)Bound*bni_38] + [(2)bni_38]x0[0] + [bni_38]x1[0] ≥ 0∧[(-1)bso_39] ≥ 0)



    We simplified constraint (7) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (9)    ([1] + x1[0] + x0[0] ≥ 0∧x2[0] ≥ 0∧x0[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])), ≥)∧[bni_38 + (-1)Bound*bni_38] + [bni_38]x1[0] + [(2)bni_38]x0[0] ≥ 0∧[(-1)bso_39] ≥ 0)







For Pair COND_1056_0_MAIN_GT(TRUE, java.lang.Object(ARRAY(x0)), x1, x2) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0)), +(x1, 1), 0) the following chains were created:
  • We consider the chain COND_1056_0_MAIN_GT(TRUE, java.lang.Object(ARRAY(x0[1])), x1[1], x2[1]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[1])), +(x1[1], 1), 0) which results in the following constraint:

    (10)    (COND_1056_0_MAIN_GT(TRUE, java.lang.Object(ARRAY(x0[1])), x1[1], x2[1])≥NonInfC∧COND_1056_0_MAIN_GT(TRUE, java.lang.Object(ARRAY(x0[1])), x1[1], x2[1])≥1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[1])), +(x1[1], 1), 0)∧(UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[1])), +(x1[1], 1), 0)), ≥))



    We simplified constraint (10) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (11)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[1])), +(x1[1], 1), 0)), ≥)∧[bni_40] = 0∧[1 + (-1)bso_41] ≥ 0)



    We simplified constraint (11) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (12)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[1])), +(x1[1], 1), 0)), ≥)∧[bni_40] = 0∧[1 + (-1)bso_41] ≥ 0)



    We simplified constraint (12) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (13)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[1])), +(x1[1], 1), 0)), ≥)∧[bni_40] = 0∧[1 + (-1)bso_41] ≥ 0)



    We simplified constraint (13) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (14)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[1])), +(x1[1], 1), 0)), ≥)∧[bni_40] = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_41] ≥ 0)







For Pair 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0)), x1, x2) → COND_1056_0_MAIN_GT1(<=(x2, x0), java.lang.Object(ARRAY(x0)), x1, x2) the following chains were created:
  • We consider the chain 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]), COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) which results in the following constraint:

    (15)    (<=(x2[2], x0[2])=TRUEjava.lang.Object(ARRAY(x0[2]))=java.lang.Object(ARRAY(x0[3]))∧x1[2]=x1[3]x2[2]=x2[3]1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥NonInfC∧1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])∧(UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥))



    We simplified constraint (15) using rules (I), (II), (IV) which results in the following new constraint:

    (16)    (<=(x2[2], x0[2])=TRUE1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥NonInfC∧1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])∧(UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥))



    We simplified constraint (16) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (17)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_42 + (-1)Bound*bni_42] + [(-1)bni_42]x1[2] + [(2)bni_42]x0[2] ≥ 0∧[(-1)bso_43] ≥ 0)



    We simplified constraint (17) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (18)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_42 + (-1)Bound*bni_42] + [(-1)bni_42]x1[2] + [(2)bni_42]x0[2] ≥ 0∧[(-1)bso_43] ≥ 0)



    We simplified constraint (18) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (19)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_42 + (-1)Bound*bni_42] + [(-1)bni_42]x1[2] + [(2)bni_42]x0[2] ≥ 0∧[(-1)bso_43] ≥ 0)



    We simplified constraint (19) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (20)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_42] = 0∧[(-1)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]x0[2] ≥ 0∧0 = 0∧[(-1)bso_43] ≥ 0)



    We simplified constraint (20) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (21)    (x0[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_42] = 0∧[(-1)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]x2[2] + [(2)bni_42]x0[2] ≥ 0∧0 = 0∧[(-1)bso_43] ≥ 0)



    We simplified constraint (21) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (22)    (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_42] = 0∧[(-1)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]x2[2] + [(2)bni_42]x0[2] ≥ 0∧0 = 0∧[(-1)bso_43] ≥ 0)


    (23)    (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_42] = 0∧[(-1)bni_42 + (-1)Bound*bni_42] + [(-2)bni_42]x2[2] + [(2)bni_42]x0[2] ≥ 0∧0 = 0∧[(-1)bso_43] ≥ 0)







For Pair COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0)), x1, x2) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1, x2), java.lang.Object(ARRAY(x0)), x1, x2) the following chains were created:
  • We consider the chain COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) which results in the following constraint:

    (24)    (COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])≥NonInfC∧COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])≥1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])∧(UIncreasing(1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥))



    We simplified constraint (24) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (25)    ((UIncreasing(1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_44] = 0∧[(-1)bso_45] ≥ 0)



    We simplified constraint (25) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (26)    ((UIncreasing(1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_44] = 0∧[(-1)bso_45] ≥ 0)



    We simplified constraint (26) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (27)    ((UIncreasing(1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_44] = 0∧[(-1)bso_45] ≥ 0)



    We simplified constraint (27) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (28)    ((UIncreasing(1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_44] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_45] ≥ 0)







For Pair 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3, -1), >(x1, -1)), 1004_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) the following chains were created:
  • We consider the chain 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]), COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1)) which results in the following constraint:

    (29)    (&&(>(x3[4], -1), >(x1[4], -1))=TRUE1004_0_parts_Return(x0[4], x1[4])=1004_0_parts_Return(x0[5], x1[5])∧java.lang.Object(ARRAY(x3[4]))=java.lang.Object(ARRAY(x3[5]))∧x0[4]=x0[5]x1[4]=x1[5]1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥))



    We simplified constraint (29) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (30)    (>(x3[4], -1)=TRUE>(x1[4], -1)=TRUE1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥))



    We simplified constraint (30) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (31)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧[(-1)bni_46 + (-1)Bound*bni_46] + [(-1)bni_46]x0[4] + [(2)bni_46]x3[4] ≥ 0∧[(-1)bso_47] ≥ 0)



    We simplified constraint (31) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (32)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧[(-1)bni_46 + (-1)Bound*bni_46] + [(-1)bni_46]x0[4] + [(2)bni_46]x3[4] ≥ 0∧[(-1)bso_47] ≥ 0)



    We simplified constraint (32) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (33)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧[(-1)bni_46 + (-1)Bound*bni_46] + [(-1)bni_46]x0[4] + [(2)bni_46]x3[4] ≥ 0∧[(-1)bso_47] ≥ 0)



    We simplified constraint (33) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (34)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧[(-1)bni_46] = 0∧[(-1)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]x3[4] ≥ 0∧0 = 0∧[(-1)bso_47] ≥ 0)







For Pair COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3)), x0, +(x1, 1)) the following chains were created:
  • We consider the chain COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1)) which results in the following constraint:

    (35)    (COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5])≥NonInfC∧COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5])≥1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))∧(UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥))



    We simplified constraint (35) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (36)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_48] = 0∧[(-1)bso_49] ≥ 0)



    We simplified constraint (36) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (37)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_48] = 0∧[(-1)bso_49] ≥ 0)



    We simplified constraint (37) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (38)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_48] = 0∧[(-1)bso_49] ≥ 0)



    We simplified constraint (38) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (39)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_48] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_49] ≥ 0)







For Pair 1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0), java.lang.Object(ARRAY(x3)), x0, 0) → COND_1163_1_MAIN_INVOKEMETHOD1(>(x3, -1), 1018_0_parts_Return(x0), java.lang.Object(ARRAY(x3)), x0, 0) the following chains were created:
  • We consider the chain 1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0), COND_1163_1_MAIN_INVOKEMETHOD1(TRUE, 1018_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1) which results in the following constraint:

    (40)    (>(x3[6], -1)=TRUE1018_0_parts_Return(x0[6])=1018_0_parts_Return(x0[7])∧java.lang.Object(ARRAY(x3[6]))=java.lang.Object(ARRAY(x3[7]))∧x0[6]=x0[7]1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)≥COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥))



    We simplified constraint (40) using rules (I), (II), (IV) which results in the following new constraint:

    (41)    (>(x3[6], -1)=TRUE1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)≥COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥))



    We simplified constraint (41) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (42)    (x3[6] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧[(-1)bni_50 + (-1)Bound*bni_50] + [(-1)bni_50]x0[6] + [(2)bni_50]x3[6] ≥ 0∧[(-1)bso_51] ≥ 0)



    We simplified constraint (42) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (43)    (x3[6] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧[(-1)bni_50 + (-1)Bound*bni_50] + [(-1)bni_50]x0[6] + [(2)bni_50]x3[6] ≥ 0∧[(-1)bso_51] ≥ 0)



    We simplified constraint (43) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (44)    (x3[6] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧[(-1)bni_50 + (-1)Bound*bni_50] + [(-1)bni_50]x0[6] + [(2)bni_50]x3[6] ≥ 0∧[(-1)bso_51] ≥ 0)



    We simplified constraint (44) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (45)    (x3[6] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧[(-1)bni_50] = 0∧[(-1)bni_50 + (-1)Bound*bni_50] + [(2)bni_50]x3[6] ≥ 0∧0 = 0∧[(-1)bso_51] ≥ 0)







For Pair COND_1163_1_MAIN_INVOKEMETHOD1(TRUE, 1018_0_parts_Return(x0), java.lang.Object(ARRAY(x3)), x0, 0) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3)), x0, 1) the following chains were created:
  • We consider the chain COND_1163_1_MAIN_INVOKEMETHOD1(TRUE, 1018_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1) which results in the following constraint:

    (46)    (COND_1163_1_MAIN_INVOKEMETHOD1(TRUE, 1018_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0)≥NonInfC∧COND_1163_1_MAIN_INVOKEMETHOD1(TRUE, 1018_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0)≥1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)∧(UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥))



    We simplified constraint (46) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (47)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_52] = 0∧[(-1)bso_53] ≥ 0)



    We simplified constraint (47) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (48)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_52] = 0∧[(-1)bso_53] ≥ 0)



    We simplified constraint (48) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (49)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_52] = 0∧[(-1)bso_53] ≥ 0)



    We simplified constraint (49) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (50)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_52] = 0∧0 = 0∧0 = 0∧[(-1)bso_53] ≥ 0)







For Pair 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3, -1), >(x1, 0)), 1004_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) the following chains were created:
  • We consider the chain 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]), COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1)) which results in the following constraint:

    (51)    (&&(>(x3[8], -1), >(x1[8], 0))=TRUE1004_0_parts_Return(x0[8], x1[8])=1004_0_parts_Return(x0[9], x1[9])∧java.lang.Object(ARRAY(x3[8]))=java.lang.Object(ARRAY(x3[9]))∧x0[8]=x0[9]x1[8]=x1[9]1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥))



    We simplified constraint (51) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (52)    (>(x3[8], -1)=TRUE>(x1[8], 0)=TRUE1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥))



    We simplified constraint (52) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (53)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[(-1)bni_54 + (-1)Bound*bni_54] + [(-1)bni_54]x0[8] + [(2)bni_54]x3[8] ≥ 0∧[(-1)bso_55] ≥ 0)



    We simplified constraint (53) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (54)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[(-1)bni_54 + (-1)Bound*bni_54] + [(-1)bni_54]x0[8] + [(2)bni_54]x3[8] ≥ 0∧[(-1)bso_55] ≥ 0)



    We simplified constraint (54) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (55)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[(-1)bni_54 + (-1)Bound*bni_54] + [(-1)bni_54]x0[8] + [(2)bni_54]x3[8] ≥ 0∧[(-1)bso_55] ≥ 0)



    We simplified constraint (55) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (56)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[(-1)bni_54] = 0∧[(-1)bni_54 + (-1)Bound*bni_54] + [(2)bni_54]x3[8] ≥ 0∧0 = 0∧[(-1)bso_55] ≥ 0)



    We simplified constraint (56) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (57)    (x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[(-1)bni_54] = 0∧[(-1)bni_54 + (-1)Bound*bni_54] + [(2)bni_54]x3[8] ≥ 0∧0 = 0∧[(-1)bso_55] ≥ 0)







For Pair COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3)), x0, +(x1, 1)) the following chains were created:
  • We consider the chain COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1)) which results in the following constraint:

    (58)    (COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9])≥NonInfC∧COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9])≥1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))∧(UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥))



    We simplified constraint (58) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (59)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_56] = 0∧[(-1)bso_57] ≥ 0)



    We simplified constraint (59) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (60)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_56] = 0∧[(-1)bso_57] ≥ 0)



    We simplified constraint (60) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (61)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_56] = 0∧[(-1)bso_57] ≥ 0)



    We simplified constraint (61) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (62)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_56] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_57] ≥ 0)







For Pair 1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0), java.lang.Object(ARRAY(x1)), x2, x3) → COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3, 0), >(x1, -1)), 3772_0_parts_Return(x0), java.lang.Object(ARRAY(x1)), x2, x3) the following chains were created:
  • We consider the chain 1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]), COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1)) which results in the following constraint:

    (63)    (&&(>(x3[10], 0), >(x1[10], -1))=TRUE3772_0_parts_Return(x0[10])=3772_0_parts_Return(x0[11])∧java.lang.Object(ARRAY(x1[10]))=java.lang.Object(ARRAY(x1[11]))∧x2[10]=x2[11]x3[10]=x3[11]1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥))



    We simplified constraint (63) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (64)    (>(x3[10], 0)=TRUE>(x1[10], -1)=TRUE1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥))



    We simplified constraint (64) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (65)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧[(-1)bni_58 + (-1)Bound*bni_58] + [(-1)bni_58]x2[10] + [(2)bni_58]x1[10] ≥ 0∧[(-1)bso_59] ≥ 0)



    We simplified constraint (65) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (66)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧[(-1)bni_58 + (-1)Bound*bni_58] + [(-1)bni_58]x2[10] + [(2)bni_58]x1[10] ≥ 0∧[(-1)bso_59] ≥ 0)



    We simplified constraint (66) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (67)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧[(-1)bni_58 + (-1)Bound*bni_58] + [(-1)bni_58]x2[10] + [(2)bni_58]x1[10] ≥ 0∧[(-1)bso_59] ≥ 0)



    We simplified constraint (67) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (68)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧0 = 0∧[(-1)bni_58] = 0∧[(-1)bni_58 + (-1)Bound*bni_58] + [(2)bni_58]x1[10] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_59] ≥ 0)



    We simplified constraint (68) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (69)    (x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧0 = 0∧[(-1)bni_58] = 0∧[(-1)bni_58 + (-1)Bound*bni_58] + [(2)bni_58]x1[10] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_59] ≥ 0)







For Pair COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0), java.lang.Object(ARRAY(x1)), x2, x3) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1)), x2, +(x3, 1)) the following chains were created:
  • We consider the chain COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1)) which results in the following constraint:

    (70)    (COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11])≥NonInfC∧COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11])≥1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))∧(UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥))



    We simplified constraint (70) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (71)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_60] = 0∧[(-1)bso_61] ≥ 0)



    We simplified constraint (71) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (72)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_60] = 0∧[(-1)bso_61] ≥ 0)



    We simplified constraint (72) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (73)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_60] = 0∧[(-1)bso_61] ≥ 0)



    We simplified constraint (73) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (74)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_60] = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_61] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0)), x1, x2) → COND_1056_0_MAIN_GT(&&(&&(>(x2, x0), >=(x0, +(x1, 1))), >(x0, -1)), java.lang.Object(ARRAY(x0)), x1, x2)
    • (x0[0] ≥ 0∧x2[0] ≥ 0∧x0[0] + [-1] + x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])), ≥)∧[(-1)bni_38 + (-1)Bound*bni_38] + [(2)bni_38]x0[0] + [bni_38]x1[0] ≥ 0∧[(-1)bso_39] ≥ 0)
    • ([1] + x1[0] + x0[0] ≥ 0∧x2[0] ≥ 0∧x0[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])), ≥)∧[bni_38 + (-1)Bound*bni_38] + [bni_38]x1[0] + [(2)bni_38]x0[0] ≥ 0∧[(-1)bso_39] ≥ 0)

  • COND_1056_0_MAIN_GT(TRUE, java.lang.Object(ARRAY(x0)), x1, x2) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0)), +(x1, 1), 0)
    • ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[1])), +(x1[1], 1), 0)), ≥)∧[bni_40] = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_41] ≥ 0)

  • 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0)), x1, x2) → COND_1056_0_MAIN_GT1(<=(x2, x0), java.lang.Object(ARRAY(x0)), x1, x2)
    • (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_42] = 0∧[(-1)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]x2[2] + [(2)bni_42]x0[2] ≥ 0∧0 = 0∧[(-1)bso_43] ≥ 0)
    • (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_42] = 0∧[(-1)bni_42 + (-1)Bound*bni_42] + [(-2)bni_42]x2[2] + [(2)bni_42]x0[2] ≥ 0∧0 = 0∧[(-1)bso_43] ≥ 0)

  • COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0)), x1, x2) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1, x2), java.lang.Object(ARRAY(x0)), x1, x2)
    • ((UIncreasing(1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_44] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_45] ≥ 0)

  • 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3, -1), >(x1, -1)), 1004_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1)
    • (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧[(-1)bni_46] = 0∧[(-1)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]x3[4] ≥ 0∧0 = 0∧[(-1)bso_47] ≥ 0)

  • COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3)), x0, +(x1, 1))
    • ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_48] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_49] ≥ 0)

  • 1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0), java.lang.Object(ARRAY(x3)), x0, 0) → COND_1163_1_MAIN_INVOKEMETHOD1(>(x3, -1), 1018_0_parts_Return(x0), java.lang.Object(ARRAY(x3)), x0, 0)
    • (x3[6] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧[(-1)bni_50] = 0∧[(-1)bni_50 + (-1)Bound*bni_50] + [(2)bni_50]x3[6] ≥ 0∧0 = 0∧[(-1)bso_51] ≥ 0)

  • COND_1163_1_MAIN_INVOKEMETHOD1(TRUE, 1018_0_parts_Return(x0), java.lang.Object(ARRAY(x3)), x0, 0) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3)), x0, 1)
    • ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_52] = 0∧0 = 0∧0 = 0∧[(-1)bso_53] ≥ 0)

  • 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3, -1), >(x1, 0)), 1004_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1)
    • (x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[(-1)bni_54] = 0∧[(-1)bni_54 + (-1)Bound*bni_54] + [(2)bni_54]x3[8] ≥ 0∧0 = 0∧[(-1)bso_55] ≥ 0)

  • COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3)), x0, +(x1, 1))
    • ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_56] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_57] ≥ 0)

  • 1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0), java.lang.Object(ARRAY(x1)), x2, x3) → COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3, 0), >(x1, -1)), 3772_0_parts_Return(x0), java.lang.Object(ARRAY(x1)), x2, x3)
    • (x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧0 = 0∧[(-1)bni_58] = 0∧[(-1)bni_58 + (-1)Bound*bni_58] + [(2)bni_58]x1[10] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_59] ≥ 0)

  • COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0), java.lang.Object(ARRAY(x1)), x2, x3) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1)), x2, +(x3, 1))
    • ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_60] = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_61] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(1163_0_parts_Load(x1, x2)) = [-1] + x2 + [-1]x1   
POL(997_0_parts_GT(x1, x2)) = [-1] + [-1]x1 + [-1]x2   
POL(Cond_997_0_parts_GT(x1, x2, x3)) = [-1]x3 + x2   
POL(<=(x1, x2)) = [-1]   
POL(0) = 0   
POL(1004_0_parts_Return(x1, x2)) = [-1] + [-1]x1 + x2   
POL(Cond_997_0_parts_GT1(x1, x2, x3)) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(1018_0_parts_Return(x1)) = x1   
POL(Cond_997_0_parts_GT2(x1, x2, x3)) = [2] + [-1]x3 + x2   
POL(&&(x1, x2)) = [-1]   
POL(1055_1_parts_InvokeMethod(x1, x2, x3)) = [-1] + [-1]x1 + [-1]x3 + x2   
POL(Cond_997_0_parts_GT3(x1, x2, x3, x4)) = [-1] + [-1]x3 + x2   
POL(1063_1_parts_InvokeMethod(x1, x2, x3)) = [1] + [-1]x1 + [-1]x2 + x3   
POL(3772_0_parts_Return(x1)) = x1   
POL(Cond_1063_1_parts_InvokeMethod(x1, x2, x3, x4, x5)) = [-1] + x4 + [-1]x3 + [-1]x2   
POL(1786_1_parts_InvokeMethod(x1, x2)) = [-1] + [-1]x1 + [-1]x2   
POL(Cond_1063_1_parts_InvokeMethod2(x1, x2, x3, x4, x5)) = [1] + x4 + [-1]x3 + [-1]x2   
POL(+(x1, x2)) = x1 + x2   
POL(1056_0_MAIN_GT(x1, x2, x3)) = [-1] + [-1]x2 + [2]x1   
POL(java.lang.Object(x1)) = x1   
POL(ARRAY(x1)) = x1   
POL(COND_1056_0_MAIN_GT(x1, x2, x3, x4)) = [-1] + [-1]x3 + [2]x2   
POL(>=(x1, x2)) = [-1]   
POL(1) = [1]   
POL(-1) = [-1]   
POL(COND_1056_0_MAIN_GT1(x1, x2, x3, x4)) = [-1] + [-1]x3 + [2]x2   
POL(1163_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [-1] + [-1]x3 + [2]x2   
POL(COND_1163_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4, x5)) = [-1] + [-1]x4 + [2]x3   
POL(COND_1163_1_MAIN_INVOKEMETHOD1(x1, x2, x3, x4, x5)) = [-1] + [-1]x4 + [2]x3   
POL(COND_1163_1_MAIN_INVOKEMETHOD2(x1, x2, x3, x4, x5)) = [-1] + [-1]x4 + [2]x3   
POL(COND_1163_1_MAIN_INVOKEMETHOD4(x1, x2, x3, x4, x5)) = [-1] + [-1]x4 + [2]x3   

The following pairs are in P>:

COND_1056_0_MAIN_GT(TRUE, java.lang.Object(ARRAY(x0[1])), x1[1], x2[1]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[1])), +(x1[1], 1), 0)

The following pairs are in Pbound:

1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[0])), x1[0], x2[0]) → COND_1056_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])

The following pairs are in P:

1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[0])), x1[0], x2[0]) → COND_1056_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])
1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))
1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)
COND_1163_1_MAIN_INVOKEMETHOD1(TRUE, 1018_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)
1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))
1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))

At least the following rules have been oriented under context sensitive arithmetic replacement:

1063_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x3, x1)1Cond_1063_1_parts_InvokeMethod(>(x1, 0), 1004_0_parts_Return(x0, x1), x3, x1, x4)1
1063_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)1Cond_1063_1_parts_InvokeMethod2(>(x2, 0), 3772_0_parts_Return(x0), x1, x2, x3)1

(28) Complex Obligation (AND)

(29) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
1163_0_parts_Load(x0, x1) → 997_0_parts_GT(x1, x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT(x0 <= 0, x1, x0)
Cond_997_0_parts_GT(TRUE, x1, x0) → 1004_0_parts_Return(x0, x1)
997_0_parts_GT(0, x0) → Cond_997_0_parts_GT1(x0 > 0, 0, x0)
Cond_997_0_parts_GT1(TRUE, 0, x0) → 1018_0_parts_Return(x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT2(x1 > x0 && x1 > 0 && x0 > 0, x1, x0)
Cond_997_0_parts_GT2(TRUE, x1, x0) → 1055_1_parts_InvokeMethod(997_0_parts_GT(x0, x0), x1, x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT3(x1 > 0 && x1 <= x0 && x0 > 0, x1, x0, x2)
Cond_997_0_parts_GT3(TRUE, x1, x0, x2) → 1063_1_parts_InvokeMethod(997_0_parts_GT(x1, x2), x0, x1)
1055_1_parts_InvokeMethod(1004_0_parts_Return(x0, x0), x2, x0) → 1004_0_parts_Return(x0, x2)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2, x1) → 1004_0_parts_Return(x1, x2)
1063_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x3, x1) → Cond_1063_1_parts_InvokeMethod(x1 > 0, 1004_0_parts_Return(x0, x1), x3, x1, x4)
Cond_1063_1_parts_InvokeMethod(TRUE, 1004_0_parts_Return(x0, x1), x3, x1, x4) → 1786_1_parts_InvokeMethod(997_0_parts_GT(x4, x3), x3)
1063_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2) → Cond_1063_1_parts_InvokeMethod2(x2 > 0, 3772_0_parts_Return(x0), x1, x2, x3)
Cond_1063_1_parts_InvokeMethod2(TRUE, 3772_0_parts_Return(x0), x1, x2, x3) → 1786_1_parts_InvokeMethod(997_0_parts_GT(x3, x1), x1)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x0) → 3772_0_parts_Return(x3 + x2)
1786_1_parts_InvokeMethod(1018_0_parts_Return(x0), x0) → 3772_0_parts_Return(arith[1])
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2) → 3772_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(0): 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[0])), x1[0], x2[0]) → COND_1056_0_MAIN_GT(x2[0] > x0[0] && x0[0] >= x1[0] + 1 && x0[0] > -1, java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])
(2): 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1056_0_MAIN_GT1(x2[2] <= x0[2], java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
(3): COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
(4): 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_1163_1_MAIN_INVOKEMETHOD(x3[4] > -1 && x1[4] > -1, 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
(5): COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], x1[5] + 1)
(6): 1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_1163_1_MAIN_INVOKEMETHOD1(x3[6] > -1, 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)
(7): COND_1163_1_MAIN_INVOKEMETHOD1(TRUE, 1018_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)
(8): 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_1163_1_MAIN_INVOKEMETHOD2(x3[8] > -1 && x1[8] > 0, 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
(9): COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], x1[9] + 1)
(10): 1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_1163_1_MAIN_INVOKEMETHOD4(x3[10] > 0 && x1[10] > -1, 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
(11): COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], x3[11] + 1)

(5) -> (0), if (java.lang.Object(ARRAY(x3[5])) →* java.lang.Object(ARRAY(x0[0]))∧x0[5]* x1[0]x1[5] + 1* x2[0])


(7) -> (0), if (java.lang.Object(ARRAY(x3[7])) →* java.lang.Object(ARRAY(x0[0]))∧x0[7]* x1[0]1* x2[0])


(9) -> (0), if (java.lang.Object(ARRAY(x3[9])) →* java.lang.Object(ARRAY(x0[0]))∧x0[9]* x1[0]x1[9] + 1* x2[0])


(11) -> (0), if (java.lang.Object(ARRAY(x1[11])) →* java.lang.Object(ARRAY(x0[0]))∧x2[11]* x1[0]x3[11] + 1* x2[0])


(5) -> (2), if (java.lang.Object(ARRAY(x3[5])) →* java.lang.Object(ARRAY(x0[2]))∧x0[5]* x1[2]x1[5] + 1* x2[2])


(7) -> (2), if (java.lang.Object(ARRAY(x3[7])) →* java.lang.Object(ARRAY(x0[2]))∧x0[7]* x1[2]1* x2[2])


(9) -> (2), if (java.lang.Object(ARRAY(x3[9])) →* java.lang.Object(ARRAY(x0[2]))∧x0[9]* x1[2]x1[9] + 1* x2[2])


(11) -> (2), if (java.lang.Object(ARRAY(x1[11])) →* java.lang.Object(ARRAY(x0[2]))∧x2[11]* x1[2]x3[11] + 1* x2[2])


(2) -> (3), if (x2[2] <= x0[2]java.lang.Object(ARRAY(x0[2])) →* java.lang.Object(ARRAY(x0[3]))∧x1[2]* x1[3]x2[2]* x2[3])


(3) -> (4), if (1163_0_parts_Load(x1[3], x2[3]) →* 1004_0_parts_Return(x0[4], x1[4])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[4]))∧x1[3]* x0[4]x2[3]* x1[4])


(4) -> (5), if (x3[4] > -1 && x1[4] > -11004_0_parts_Return(x0[4], x1[4]) →* 1004_0_parts_Return(x0[5], x1[5])∧java.lang.Object(ARRAY(x3[4])) →* java.lang.Object(ARRAY(x3[5]))∧x0[4]* x0[5]x1[4]* x1[5])


(3) -> (6), if (1163_0_parts_Load(x1[3], x2[3]) →* 1018_0_parts_Return(x0[6])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[6]))∧x1[3]* x0[6]x2[3]* 0)


(6) -> (7), if (x3[6] > -11018_0_parts_Return(x0[6]) →* 1018_0_parts_Return(x0[7])∧java.lang.Object(ARRAY(x3[6])) →* java.lang.Object(ARRAY(x3[7]))∧x0[6]* x0[7])


(3) -> (8), if (1163_0_parts_Load(x1[3], x2[3]) →* 1004_0_parts_Return(x0[8], x1[8])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[8]))∧x1[3]* x0[8]x2[3]* x1[8])


(8) -> (9), if (x3[8] > -1 && x1[8] > 01004_0_parts_Return(x0[8], x1[8]) →* 1004_0_parts_Return(x0[9], x1[9])∧java.lang.Object(ARRAY(x3[8])) →* java.lang.Object(ARRAY(x3[9]))∧x0[8]* x0[9]x1[8]* x1[9])


(3) -> (10), if (1163_0_parts_Load(x1[3], x2[3]) →* 3772_0_parts_Return(x0[10])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x1[10]))∧x1[3]* x2[10]x2[3]* x3[10])


(10) -> (11), if (x3[10] > 0 && x1[10] > -13772_0_parts_Return(x0[10]) →* 3772_0_parts_Return(x0[11])∧java.lang.Object(ARRAY(x1[10])) →* java.lang.Object(ARRAY(x1[11]))∧x2[10]* x2[11]x3[10]* x3[11])



The set Q consists of the following terms:
1163_0_parts_Load(x0, x1)
997_0_parts_GT(x0, x1)
Cond_997_0_parts_GT(TRUE, x0, x1)
Cond_997_0_parts_GT1(TRUE, 0, x0)
Cond_997_0_parts_GT2(TRUE, x0, x1)
Cond_997_0_parts_GT3(TRUE, x0, x1, x2)
1055_1_parts_InvokeMethod(1004_0_parts_Return(x0, x0), x1, x0)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
1063_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x2, x1)
Cond_1063_1_parts_InvokeMethod(TRUE, 1004_0_parts_Return(x0, x1), x2, x1, x3)
1063_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
Cond_1063_1_parts_InvokeMethod2(TRUE, 3772_0_parts_Return(x0), x1, x2, x3)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x0)
1786_1_parts_InvokeMethod(1018_0_parts_Return(x0), x0)
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1)

(30) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node.

(31) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
1163_0_parts_Load(x0, x1) → 997_0_parts_GT(x1, x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT(x0 <= 0, x1, x0)
Cond_997_0_parts_GT(TRUE, x1, x0) → 1004_0_parts_Return(x0, x1)
997_0_parts_GT(0, x0) → Cond_997_0_parts_GT1(x0 > 0, 0, x0)
Cond_997_0_parts_GT1(TRUE, 0, x0) → 1018_0_parts_Return(x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT2(x1 > x0 && x1 > 0 && x0 > 0, x1, x0)
Cond_997_0_parts_GT2(TRUE, x1, x0) → 1055_1_parts_InvokeMethod(997_0_parts_GT(x0, x0), x1, x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT3(x1 > 0 && x1 <= x0 && x0 > 0, x1, x0, x2)
Cond_997_0_parts_GT3(TRUE, x1, x0, x2) → 1063_1_parts_InvokeMethod(997_0_parts_GT(x1, x2), x0, x1)
1055_1_parts_InvokeMethod(1004_0_parts_Return(x0, x0), x2, x0) → 1004_0_parts_Return(x0, x2)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2, x1) → 1004_0_parts_Return(x1, x2)
1063_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x3, x1) → Cond_1063_1_parts_InvokeMethod(x1 > 0, 1004_0_parts_Return(x0, x1), x3, x1, x4)
Cond_1063_1_parts_InvokeMethod(TRUE, 1004_0_parts_Return(x0, x1), x3, x1, x4) → 1786_1_parts_InvokeMethod(997_0_parts_GT(x4, x3), x3)
1063_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2) → Cond_1063_1_parts_InvokeMethod2(x2 > 0, 3772_0_parts_Return(x0), x1, x2, x3)
Cond_1063_1_parts_InvokeMethod2(TRUE, 3772_0_parts_Return(x0), x1, x2, x3) → 1786_1_parts_InvokeMethod(997_0_parts_GT(x3, x1), x1)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x0) → 3772_0_parts_Return(x3 + x2)
1786_1_parts_InvokeMethod(1018_0_parts_Return(x0), x0) → 3772_0_parts_Return(arith[1])
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2) → 3772_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(11): COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], x3[11] + 1)
(10): 1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_1163_1_MAIN_INVOKEMETHOD4(x3[10] > 0 && x1[10] > -1, 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
(9): COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], x1[9] + 1)
(8): 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_1163_1_MAIN_INVOKEMETHOD2(x3[8] > -1 && x1[8] > 0, 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
(7): COND_1163_1_MAIN_INVOKEMETHOD1(TRUE, 1018_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)
(6): 1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_1163_1_MAIN_INVOKEMETHOD1(x3[6] > -1, 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)
(5): COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], x1[5] + 1)
(4): 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_1163_1_MAIN_INVOKEMETHOD(x3[4] > -1 && x1[4] > -1, 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
(3): COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
(2): 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1056_0_MAIN_GT1(x2[2] <= x0[2], java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])

(5) -> (2), if (java.lang.Object(ARRAY(x3[5])) →* java.lang.Object(ARRAY(x0[2]))∧x0[5]* x1[2]x1[5] + 1* x2[2])


(7) -> (2), if (java.lang.Object(ARRAY(x3[7])) →* java.lang.Object(ARRAY(x0[2]))∧x0[7]* x1[2]1* x2[2])


(9) -> (2), if (java.lang.Object(ARRAY(x3[9])) →* java.lang.Object(ARRAY(x0[2]))∧x0[9]* x1[2]x1[9] + 1* x2[2])


(11) -> (2), if (java.lang.Object(ARRAY(x1[11])) →* java.lang.Object(ARRAY(x0[2]))∧x2[11]* x1[2]x3[11] + 1* x2[2])


(2) -> (3), if (x2[2] <= x0[2]java.lang.Object(ARRAY(x0[2])) →* java.lang.Object(ARRAY(x0[3]))∧x1[2]* x1[3]x2[2]* x2[3])


(3) -> (4), if (1163_0_parts_Load(x1[3], x2[3]) →* 1004_0_parts_Return(x0[4], x1[4])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[4]))∧x1[3]* x0[4]x2[3]* x1[4])


(4) -> (5), if (x3[4] > -1 && x1[4] > -11004_0_parts_Return(x0[4], x1[4]) →* 1004_0_parts_Return(x0[5], x1[5])∧java.lang.Object(ARRAY(x3[4])) →* java.lang.Object(ARRAY(x3[5]))∧x0[4]* x0[5]x1[4]* x1[5])


(3) -> (6), if (1163_0_parts_Load(x1[3], x2[3]) →* 1018_0_parts_Return(x0[6])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[6]))∧x1[3]* x0[6]x2[3]* 0)


(6) -> (7), if (x3[6] > -11018_0_parts_Return(x0[6]) →* 1018_0_parts_Return(x0[7])∧java.lang.Object(ARRAY(x3[6])) →* java.lang.Object(ARRAY(x3[7]))∧x0[6]* x0[7])


(3) -> (8), if (1163_0_parts_Load(x1[3], x2[3]) →* 1004_0_parts_Return(x0[8], x1[8])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[8]))∧x1[3]* x0[8]x2[3]* x1[8])


(8) -> (9), if (x3[8] > -1 && x1[8] > 01004_0_parts_Return(x0[8], x1[8]) →* 1004_0_parts_Return(x0[9], x1[9])∧java.lang.Object(ARRAY(x3[8])) →* java.lang.Object(ARRAY(x3[9]))∧x0[8]* x0[9]x1[8]* x1[9])


(3) -> (10), if (1163_0_parts_Load(x1[3], x2[3]) →* 3772_0_parts_Return(x0[10])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x1[10]))∧x1[3]* x2[10]x2[3]* x3[10])


(10) -> (11), if (x3[10] > 0 && x1[10] > -13772_0_parts_Return(x0[10]) →* 3772_0_parts_Return(x0[11])∧java.lang.Object(ARRAY(x1[10])) →* java.lang.Object(ARRAY(x1[11]))∧x2[10]* x2[11]x3[10]* x3[11])



The set Q consists of the following terms:
1163_0_parts_Load(x0, x1)
997_0_parts_GT(x0, x1)
Cond_997_0_parts_GT(TRUE, x0, x1)
Cond_997_0_parts_GT1(TRUE, 0, x0)
Cond_997_0_parts_GT2(TRUE, x0, x1)
Cond_997_0_parts_GT3(TRUE, x0, x1, x2)
1055_1_parts_InvokeMethod(1004_0_parts_Return(x0, x0), x1, x0)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
1063_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x2, x1)
Cond_1063_1_parts_InvokeMethod(TRUE, 1004_0_parts_Return(x0, x1), x2, x1, x3)
1063_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
Cond_1063_1_parts_InvokeMethod2(TRUE, 3772_0_parts_Return(x0), x1, x2, x3)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x0)
1786_1_parts_InvokeMethod(1018_0_parts_Return(x0), x0)
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1)

(32) IDPNonInfProof (SOUND transformation)

Used the following options for this NonInfProof:
IDPGPoloSolver: Range: [(-1,2)] IsNat: false Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpCand1ShapeHeuristic@5575b290 Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 0 Max Right Steps: 0

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1)) the following chains were created:
  • We consider the chain COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1)) which results in the following constraint:

    (1)    (COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11])≥NonInfC∧COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11])≥1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))∧(UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥))



    We simplified constraint (1) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (2)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_28] = 0∧[1 + (-1)bso_29] ≥ 0)



    We simplified constraint (2) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (3)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_28] = 0∧[1 + (-1)bso_29] ≥ 0)



    We simplified constraint (3) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (4)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_28] = 0∧[1 + (-1)bso_29] ≥ 0)



    We simplified constraint (4) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (5)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_28] = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_29] ≥ 0)







For Pair 1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) the following chains were created:
  • We consider the chain 1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]), COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1)) which results in the following constraint:

    (6)    (&&(>(x3[10], 0), >(x1[10], -1))=TRUE3772_0_parts_Return(x0[10])=3772_0_parts_Return(x0[11])∧java.lang.Object(ARRAY(x1[10]))=java.lang.Object(ARRAY(x1[11]))∧x2[10]=x2[11]x3[10]=x3[11]1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥))



    We simplified constraint (6) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (7)    (>(x3[10], 0)=TRUE>(x1[10], -1)=TRUE1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥))



    We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (8)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧[(-1)bni_30 + (-1)Bound*bni_30] + [bni_30]x1[10] + [(-1)bni_30]x3[10] ≥ 0∧[(-1)bso_31] ≥ 0)



    We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (9)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧[(-1)bni_30 + (-1)Bound*bni_30] + [bni_30]x1[10] + [(-1)bni_30]x3[10] ≥ 0∧[(-1)bso_31] ≥ 0)



    We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (10)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧[(-1)bni_30 + (-1)Bound*bni_30] + [bni_30]x1[10] + [(-1)bni_30]x3[10] ≥ 0∧[(-1)bso_31] ≥ 0)



    We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (11)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_30 + (-1)Bound*bni_30] + [bni_30]x1[10] + [(-1)bni_30]x3[10] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_31] ≥ 0)



    We simplified constraint (11) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (12)    (x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧0 = 0∧0 = 0∧[(-2)bni_30 + (-1)Bound*bni_30] + [bni_30]x1[10] + [(-1)bni_30]x3[10] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_31] ≥ 0)







For Pair COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1)) the following chains were created:
  • We consider the chain COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1)) which results in the following constraint:

    (13)    (COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9])≥NonInfC∧COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9])≥1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))∧(UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥))



    We simplified constraint (13) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (14)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_32] = 0∧[1 + (-1)bso_33] ≥ 0)



    We simplified constraint (14) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (15)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_32] = 0∧[1 + (-1)bso_33] ≥ 0)



    We simplified constraint (15) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (16)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_32] = 0∧[1 + (-1)bso_33] ≥ 0)



    We simplified constraint (16) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (17)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_32] = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_33] ≥ 0)







For Pair 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) the following chains were created:
  • We consider the chain 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]), COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1)) which results in the following constraint:

    (18)    (&&(>(x3[8], -1), >(x1[8], 0))=TRUE1004_0_parts_Return(x0[8], x1[8])=1004_0_parts_Return(x0[9], x1[9])∧java.lang.Object(ARRAY(x3[8]))=java.lang.Object(ARRAY(x3[9]))∧x0[8]=x0[9]x1[8]=x1[9]1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥))



    We simplified constraint (18) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (19)    (>(x3[8], -1)=TRUE>(x1[8], 0)=TRUE1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥))



    We simplified constraint (19) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (20)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[(-1)bni_34 + (-1)Bound*bni_34] + [(-1)bni_34]x1[8] + [bni_34]x3[8] ≥ 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (20) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (21)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[(-1)bni_34 + (-1)Bound*bni_34] + [(-1)bni_34]x1[8] + [bni_34]x3[8] ≥ 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (21) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (22)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[(-1)bni_34 + (-1)Bound*bni_34] + [(-1)bni_34]x1[8] + [bni_34]x3[8] ≥ 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (22) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (23)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧0 = 0∧[(-1)bni_34 + (-1)Bound*bni_34] + [(-1)bni_34]x1[8] + [bni_34]x3[8] ≥ 0∧0 = 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (23) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (24)    (x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧0 = 0∧[(-2)bni_34 + (-1)Bound*bni_34] + [(-1)bni_34]x1[8] + [bni_34]x3[8] ≥ 0∧0 = 0∧[(-1)bso_35] ≥ 0)







For Pair COND_1163_1_MAIN_INVOKEMETHOD1(TRUE, 1018_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1) the following chains were created:
  • We consider the chain COND_1163_1_MAIN_INVOKEMETHOD1(TRUE, 1018_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1) which results in the following constraint:

    (25)    (COND_1163_1_MAIN_INVOKEMETHOD1(TRUE, 1018_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0)≥NonInfC∧COND_1163_1_MAIN_INVOKEMETHOD1(TRUE, 1018_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0)≥1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)∧(UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥))



    We simplified constraint (25) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (26)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_36] = 0∧[1 + (-1)bso_37] ≥ 0)



    We simplified constraint (26) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (27)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_36] = 0∧[1 + (-1)bso_37] ≥ 0)



    We simplified constraint (27) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (28)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_36] = 0∧[1 + (-1)bso_37] ≥ 0)



    We simplified constraint (28) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (29)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_36] = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_37] ≥ 0)







For Pair 1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) the following chains were created:
  • We consider the chain 1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0), COND_1163_1_MAIN_INVOKEMETHOD1(TRUE, 1018_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1) which results in the following constraint:

    (30)    (>(x3[6], -1)=TRUE1018_0_parts_Return(x0[6])=1018_0_parts_Return(x0[7])∧java.lang.Object(ARRAY(x3[6]))=java.lang.Object(ARRAY(x3[7]))∧x0[6]=x0[7]1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)≥COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥))



    We simplified constraint (30) using rules (I), (II), (IV) which results in the following new constraint:

    (31)    (>(x3[6], -1)=TRUE1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)≥COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥))



    We simplified constraint (31) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (32)    (x3[6] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧[(-1)bni_38 + (-1)Bound*bni_38] + [bni_38]x3[6] ≥ 0∧[(-1)bso_39] ≥ 0)



    We simplified constraint (32) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (33)    (x3[6] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧[(-1)bni_38 + (-1)Bound*bni_38] + [bni_38]x3[6] ≥ 0∧[(-1)bso_39] ≥ 0)



    We simplified constraint (33) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (34)    (x3[6] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧[(-1)bni_38 + (-1)Bound*bni_38] + [bni_38]x3[6] ≥ 0∧[(-1)bso_39] ≥ 0)



    We simplified constraint (34) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (35)    (x3[6] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧0 = 0∧[(-1)bni_38 + (-1)Bound*bni_38] + [bni_38]x3[6] ≥ 0∧0 = 0∧[(-1)bso_39] ≥ 0)







For Pair COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1)) the following chains were created:
  • We consider the chain COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1)) which results in the following constraint:

    (36)    (COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5])≥NonInfC∧COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5])≥1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))∧(UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥))



    We simplified constraint (36) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (37)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_40] = 0∧[1 + (-1)bso_41] ≥ 0)



    We simplified constraint (37) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (38)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_40] = 0∧[1 + (-1)bso_41] ≥ 0)



    We simplified constraint (38) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (39)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_40] = 0∧[1 + (-1)bso_41] ≥ 0)



    We simplified constraint (39) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (40)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_40] = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_41] ≥ 0)







For Pair 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) the following chains were created:
  • We consider the chain 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]), COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1)) which results in the following constraint:

    (41)    (&&(>(x3[4], -1), >(x1[4], -1))=TRUE1004_0_parts_Return(x0[4], x1[4])=1004_0_parts_Return(x0[5], x1[5])∧java.lang.Object(ARRAY(x3[4]))=java.lang.Object(ARRAY(x3[5]))∧x0[4]=x0[5]x1[4]=x1[5]1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥))



    We simplified constraint (41) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (42)    (>(x3[4], -1)=TRUE>(x1[4], -1)=TRUE1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥))



    We simplified constraint (42) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (43)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧[(-1)bni_42 + (-1)Bound*bni_42] + [(-1)bni_42]x1[4] + [bni_42]x3[4] ≥ 0∧[(-1)bso_43] ≥ 0)



    We simplified constraint (43) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (44)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧[(-1)bni_42 + (-1)Bound*bni_42] + [(-1)bni_42]x1[4] + [bni_42]x3[4] ≥ 0∧[(-1)bso_43] ≥ 0)



    We simplified constraint (44) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (45)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧[(-1)bni_42 + (-1)Bound*bni_42] + [(-1)bni_42]x1[4] + [bni_42]x3[4] ≥ 0∧[(-1)bso_43] ≥ 0)



    We simplified constraint (45) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (46)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧0 = 0∧[(-1)bni_42 + (-1)Bound*bni_42] + [(-1)bni_42]x1[4] + [bni_42]x3[4] ≥ 0∧0 = 0∧[(-1)bso_43] ≥ 0)







For Pair COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) the following chains were created:
  • We consider the chain COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) which results in the following constraint:

    (47)    (COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])≥NonInfC∧COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])≥1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])∧(UIncreasing(1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥))



    We simplified constraint (47) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (48)    ((UIncreasing(1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_44] = 0∧[(-1)bso_45] ≥ 0)



    We simplified constraint (48) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (49)    ((UIncreasing(1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_44] = 0∧[(-1)bso_45] ≥ 0)



    We simplified constraint (49) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (50)    ((UIncreasing(1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_44] = 0∧[(-1)bso_45] ≥ 0)



    We simplified constraint (50) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (51)    ((UIncreasing(1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_44] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_45] ≥ 0)







For Pair 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) the following chains were created:
  • We consider the chain 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]), COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) which results in the following constraint:

    (52)    (<=(x2[2], x0[2])=TRUEjava.lang.Object(ARRAY(x0[2]))=java.lang.Object(ARRAY(x0[3]))∧x1[2]=x1[3]x2[2]=x2[3]1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥NonInfC∧1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])∧(UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥))



    We simplified constraint (52) using rules (I), (II), (IV) which results in the following new constraint:

    (53)    (<=(x2[2], x0[2])=TRUE1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥NonInfC∧1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])∧(UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥))



    We simplified constraint (53) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (54)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_46 + (-1)Bound*bni_46] + [(-1)bni_46]x2[2] + [bni_46]x0[2] ≥ 0∧[(-1)bso_47] ≥ 0)



    We simplified constraint (54) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (55)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_46 + (-1)Bound*bni_46] + [(-1)bni_46]x2[2] + [bni_46]x0[2] ≥ 0∧[(-1)bso_47] ≥ 0)



    We simplified constraint (55) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (56)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_46 + (-1)Bound*bni_46] + [(-1)bni_46]x2[2] + [bni_46]x0[2] ≥ 0∧[(-1)bso_47] ≥ 0)



    We simplified constraint (56) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (57)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[(-1)bni_46 + (-1)Bound*bni_46] + [(-1)bni_46]x2[2] + [bni_46]x0[2] ≥ 0∧0 = 0∧[(-1)bso_47] ≥ 0)



    We simplified constraint (57) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (58)    (x0[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[(-1)bni_46 + (-1)Bound*bni_46] + [bni_46]x0[2] ≥ 0∧0 = 0∧[(-1)bso_47] ≥ 0)



    We simplified constraint (58) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (59)    (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[(-1)bni_46 + (-1)Bound*bni_46] + [bni_46]x0[2] ≥ 0∧0 = 0∧[(-1)bso_47] ≥ 0)


    (60)    (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[(-1)bni_46 + (-1)Bound*bni_46] + [bni_46]x0[2] ≥ 0∧0 = 0∧[(-1)bso_47] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))
    • ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_28] = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_29] ≥ 0)

  • 1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
    • (x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧0 = 0∧0 = 0∧[(-2)bni_30 + (-1)Bound*bni_30] + [bni_30]x1[10] + [(-1)bni_30]x3[10] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_31] ≥ 0)

  • COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))
    • ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_32] = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_33] ≥ 0)

  • 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
    • (x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧0 = 0∧[(-2)bni_34 + (-1)Bound*bni_34] + [(-1)bni_34]x1[8] + [bni_34]x3[8] ≥ 0∧0 = 0∧[(-1)bso_35] ≥ 0)

  • COND_1163_1_MAIN_INVOKEMETHOD1(TRUE, 1018_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)
    • ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_36] = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_37] ≥ 0)

  • 1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)
    • (x3[6] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧0 = 0∧[(-1)bni_38 + (-1)Bound*bni_38] + [bni_38]x3[6] ≥ 0∧0 = 0∧[(-1)bso_39] ≥ 0)

  • COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))
    • ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_40] = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_41] ≥ 0)

  • 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
    • (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧0 = 0∧[(-1)bni_42 + (-1)Bound*bni_42] + [(-1)bni_42]x1[4] + [bni_42]x3[4] ≥ 0∧0 = 0∧[(-1)bso_43] ≥ 0)

  • COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
    • ((UIncreasing(1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_44] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_45] ≥ 0)

  • 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
    • (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[(-1)bni_46 + (-1)Bound*bni_46] + [bni_46]x0[2] ≥ 0∧0 = 0∧[(-1)bso_47] ≥ 0)
    • (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[(-1)bni_46 + (-1)Bound*bni_46] + [bni_46]x0[2] ≥ 0∧0 = 0∧[(-1)bso_47] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(1163_0_parts_Load(x1, x2)) = [-1] + [-1]x2 + [-1]x1   
POL(997_0_parts_GT(x1, x2)) = [-1] + [-1]x1 + [-1]x2   
POL(Cond_997_0_parts_GT(x1, x2, x3)) = [-1] + [-1]x3 + [-1]x2   
POL(<=(x1, x2)) = [-1]   
POL(0) = 0   
POL(1004_0_parts_Return(x1, x2)) = [-1] + [-1]x1 + [-1]x2   
POL(Cond_997_0_parts_GT1(x1, x2, x3)) = [-1] + [-1]x3   
POL(>(x1, x2)) = [-1]   
POL(1018_0_parts_Return(x1)) = x1   
POL(Cond_997_0_parts_GT2(x1, x2, x3)) = [-1] + [-1]x3 + [-1]x2   
POL(&&(x1, x2)) = [-1]   
POL(1055_1_parts_InvokeMethod(x1, x2, x3)) = [-1] + [-1]x1 + [-1]x3 + [-1]x2   
POL(Cond_997_0_parts_GT3(x1, x2, x3, x4)) = [-1] + [-1]x3 + [-1]x2   
POL(1063_1_parts_InvokeMethod(x1, x2, x3)) = [-1] + x1 + [-1]x2 + [-1]x3   
POL(3772_0_parts_Return(x1)) = x1   
POL(Cond_1063_1_parts_InvokeMethod(x1, x2, x3, x4, x5)) = [-1] + [-1]x4 + [-1]x3 + x2   
POL(1786_1_parts_InvokeMethod(x1, x2)) = [-1]x1 + [-1]x2   
POL(Cond_1063_1_parts_InvokeMethod2(x1, x2, x3, x4, x5)) = [-1] + [-1]x4 + [-1]x3 + x2   
POL(+(x1, x2)) = x1 + x2   
POL(COND_1163_1_MAIN_INVOKEMETHOD4(x1, x2, x3, x4, x5)) = [-1] + x3 + [-1]x5   
POL(java.lang.Object(x1)) = x1   
POL(ARRAY(x1)) = x1   
POL(1056_0_MAIN_GT(x1, x2, x3)) = [-1] + [-1]x3 + x1   
POL(1) = [1]   
POL(1163_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [-1] + x2 + [-1]x4   
POL(-1) = [-1]   
POL(COND_1163_1_MAIN_INVOKEMETHOD2(x1, x2, x3, x4, x5)) = [-1] + x3 + [-1]x5   
POL(COND_1163_1_MAIN_INVOKEMETHOD1(x1, x2, x3, x4, x5)) = [-1] + x3   
POL(COND_1163_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4, x5)) = [-1] + x3 + [-1]x5   
POL(COND_1056_0_MAIN_GT1(x1, x2, x3, x4)) = [-1] + x2 + [-1]x4   

The following pairs are in P>:

COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))
COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))
COND_1163_1_MAIN_INVOKEMETHOD1(TRUE, 1018_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)
COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))

The following pairs are in Pbound:

1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)
1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])

The following pairs are in P:

1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)
1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])

At least the following rules have been oriented under context sensitive arithmetic replacement:

997_0_parts_GT(x1, x0)1Cond_997_0_parts_GT(<=(x0, 0), x1, x0)1
997_0_parts_GT(0, x0)1Cond_997_0_parts_GT1(>(x0, 0), 0, x0)1
997_0_parts_GT(x1, x0)1Cond_997_0_parts_GT2(&&(&&(>(x1, x0), >(x1, 0)), >(x0, 0)), x1, x0)1
997_0_parts_GT(x1, x0)1Cond_997_0_parts_GT3(&&(&&(>(x1, 0), <=(x1, x0)), >(x0, 0)), x1, x0, x2)1
1063_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x3, x1)1Cond_1063_1_parts_InvokeMethod(>(x1, 0), 1004_0_parts_Return(x0, x1), x3, x1, x4)1
Cond_1063_1_parts_InvokeMethod2(>(x2, 0), 3772_0_parts_Return(x0), x1, x2, x3)11063_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)1
1004_0_parts_Return(x0, x1)1Cond_997_0_parts_GT(TRUE, x1, x0)1

(33) Complex Obligation (AND)

(34) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
1163_0_parts_Load(x0, x1) → 997_0_parts_GT(x1, x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT(x0 <= 0, x1, x0)
Cond_997_0_parts_GT(TRUE, x1, x0) → 1004_0_parts_Return(x0, x1)
997_0_parts_GT(0, x0) → Cond_997_0_parts_GT1(x0 > 0, 0, x0)
Cond_997_0_parts_GT1(TRUE, 0, x0) → 1018_0_parts_Return(x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT2(x1 > x0 && x1 > 0 && x0 > 0, x1, x0)
Cond_997_0_parts_GT2(TRUE, x1, x0) → 1055_1_parts_InvokeMethod(997_0_parts_GT(x0, x0), x1, x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT3(x1 > 0 && x1 <= x0 && x0 > 0, x1, x0, x2)
Cond_997_0_parts_GT3(TRUE, x1, x0, x2) → 1063_1_parts_InvokeMethod(997_0_parts_GT(x1, x2), x0, x1)
1055_1_parts_InvokeMethod(1004_0_parts_Return(x0, x0), x2, x0) → 1004_0_parts_Return(x0, x2)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2, x1) → 1004_0_parts_Return(x1, x2)
1063_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x3, x1) → Cond_1063_1_parts_InvokeMethod(x1 > 0, 1004_0_parts_Return(x0, x1), x3, x1, x4)
Cond_1063_1_parts_InvokeMethod(TRUE, 1004_0_parts_Return(x0, x1), x3, x1, x4) → 1786_1_parts_InvokeMethod(997_0_parts_GT(x4, x3), x3)
1063_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2) → Cond_1063_1_parts_InvokeMethod2(x2 > 0, 3772_0_parts_Return(x0), x1, x2, x3)
Cond_1063_1_parts_InvokeMethod2(TRUE, 3772_0_parts_Return(x0), x1, x2, x3) → 1786_1_parts_InvokeMethod(997_0_parts_GT(x3, x1), x1)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x0) → 3772_0_parts_Return(x3 + x2)
1786_1_parts_InvokeMethod(1018_0_parts_Return(x0), x0) → 3772_0_parts_Return(arith[1])
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2) → 3772_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(10): 1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_1163_1_MAIN_INVOKEMETHOD4(x3[10] > 0 && x1[10] > -1, 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
(8): 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_1163_1_MAIN_INVOKEMETHOD2(x3[8] > -1 && x1[8] > 0, 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
(6): 1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_1163_1_MAIN_INVOKEMETHOD1(x3[6] > -1, 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)
(4): 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_1163_1_MAIN_INVOKEMETHOD(x3[4] > -1 && x1[4] > -1, 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
(3): COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
(2): 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1056_0_MAIN_GT1(x2[2] <= x0[2], java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])

(2) -> (3), if (x2[2] <= x0[2]java.lang.Object(ARRAY(x0[2])) →* java.lang.Object(ARRAY(x0[3]))∧x1[2]* x1[3]x2[2]* x2[3])


(3) -> (4), if (1163_0_parts_Load(x1[3], x2[3]) →* 1004_0_parts_Return(x0[4], x1[4])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[4]))∧x1[3]* x0[4]x2[3]* x1[4])


(3) -> (6), if (1163_0_parts_Load(x1[3], x2[3]) →* 1018_0_parts_Return(x0[6])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[6]))∧x1[3]* x0[6]x2[3]* 0)


(3) -> (8), if (1163_0_parts_Load(x1[3], x2[3]) →* 1004_0_parts_Return(x0[8], x1[8])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[8]))∧x1[3]* x0[8]x2[3]* x1[8])


(3) -> (10), if (1163_0_parts_Load(x1[3], x2[3]) →* 3772_0_parts_Return(x0[10])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x1[10]))∧x1[3]* x2[10]x2[3]* x3[10])



The set Q consists of the following terms:
1163_0_parts_Load(x0, x1)
997_0_parts_GT(x0, x1)
Cond_997_0_parts_GT(TRUE, x0, x1)
Cond_997_0_parts_GT1(TRUE, 0, x0)
Cond_997_0_parts_GT2(TRUE, x0, x1)
Cond_997_0_parts_GT3(TRUE, x0, x1, x2)
1055_1_parts_InvokeMethod(1004_0_parts_Return(x0, x0), x1, x0)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
1063_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x2, x1)
Cond_1063_1_parts_InvokeMethod(TRUE, 1004_0_parts_Return(x0, x1), x2, x1, x3)
1063_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
Cond_1063_1_parts_InvokeMethod2(TRUE, 3772_0_parts_Return(x0), x1, x2, x3)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x0)
1786_1_parts_InvokeMethod(1018_0_parts_Return(x0), x0)
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1)

(35) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 6 less nodes.

(36) TRUE

(37) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
1163_0_parts_Load(x0, x1) → 997_0_parts_GT(x1, x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT(x0 <= 0, x1, x0)
Cond_997_0_parts_GT(TRUE, x1, x0) → 1004_0_parts_Return(x0, x1)
997_0_parts_GT(0, x0) → Cond_997_0_parts_GT1(x0 > 0, 0, x0)
Cond_997_0_parts_GT1(TRUE, 0, x0) → 1018_0_parts_Return(x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT2(x1 > x0 && x1 > 0 && x0 > 0, x1, x0)
Cond_997_0_parts_GT2(TRUE, x1, x0) → 1055_1_parts_InvokeMethod(997_0_parts_GT(x0, x0), x1, x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT3(x1 > 0 && x1 <= x0 && x0 > 0, x1, x0, x2)
Cond_997_0_parts_GT3(TRUE, x1, x0, x2) → 1063_1_parts_InvokeMethod(997_0_parts_GT(x1, x2), x0, x1)
1055_1_parts_InvokeMethod(1004_0_parts_Return(x0, x0), x2, x0) → 1004_0_parts_Return(x0, x2)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2, x1) → 1004_0_parts_Return(x1, x2)
1063_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x3, x1) → Cond_1063_1_parts_InvokeMethod(x1 > 0, 1004_0_parts_Return(x0, x1), x3, x1, x4)
Cond_1063_1_parts_InvokeMethod(TRUE, 1004_0_parts_Return(x0, x1), x3, x1, x4) → 1786_1_parts_InvokeMethod(997_0_parts_GT(x4, x3), x3)
1063_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2) → Cond_1063_1_parts_InvokeMethod2(x2 > 0, 3772_0_parts_Return(x0), x1, x2, x3)
Cond_1063_1_parts_InvokeMethod2(TRUE, 3772_0_parts_Return(x0), x1, x2, x3) → 1786_1_parts_InvokeMethod(997_0_parts_GT(x3, x1), x1)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x0) → 3772_0_parts_Return(x3 + x2)
1786_1_parts_InvokeMethod(1018_0_parts_Return(x0), x0) → 3772_0_parts_Return(arith[1])
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2) → 3772_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(11): COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], x3[11] + 1)
(10): 1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_1163_1_MAIN_INVOKEMETHOD4(x3[10] > 0 && x1[10] > -1, 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
(9): COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], x1[9] + 1)
(8): 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_1163_1_MAIN_INVOKEMETHOD2(x3[8] > -1 && x1[8] > 0, 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
(7): COND_1163_1_MAIN_INVOKEMETHOD1(TRUE, 1018_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)
(5): COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], x1[5] + 1)
(4): 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_1163_1_MAIN_INVOKEMETHOD(x3[4] > -1 && x1[4] > -1, 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
(3): COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])

(3) -> (4), if (1163_0_parts_Load(x1[3], x2[3]) →* 1004_0_parts_Return(x0[4], x1[4])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[4]))∧x1[3]* x0[4]x2[3]* x1[4])


(4) -> (5), if (x3[4] > -1 && x1[4] > -11004_0_parts_Return(x0[4], x1[4]) →* 1004_0_parts_Return(x0[5], x1[5])∧java.lang.Object(ARRAY(x3[4])) →* java.lang.Object(ARRAY(x3[5]))∧x0[4]* x0[5]x1[4]* x1[5])


(3) -> (8), if (1163_0_parts_Load(x1[3], x2[3]) →* 1004_0_parts_Return(x0[8], x1[8])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[8]))∧x1[3]* x0[8]x2[3]* x1[8])


(8) -> (9), if (x3[8] > -1 && x1[8] > 01004_0_parts_Return(x0[8], x1[8]) →* 1004_0_parts_Return(x0[9], x1[9])∧java.lang.Object(ARRAY(x3[8])) →* java.lang.Object(ARRAY(x3[9]))∧x0[8]* x0[9]x1[8]* x1[9])


(3) -> (10), if (1163_0_parts_Load(x1[3], x2[3]) →* 3772_0_parts_Return(x0[10])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x1[10]))∧x1[3]* x2[10]x2[3]* x3[10])


(10) -> (11), if (x3[10] > 0 && x1[10] > -13772_0_parts_Return(x0[10]) →* 3772_0_parts_Return(x0[11])∧java.lang.Object(ARRAY(x1[10])) →* java.lang.Object(ARRAY(x1[11]))∧x2[10]* x2[11]x3[10]* x3[11])



The set Q consists of the following terms:
1163_0_parts_Load(x0, x1)
997_0_parts_GT(x0, x1)
Cond_997_0_parts_GT(TRUE, x0, x1)
Cond_997_0_parts_GT1(TRUE, 0, x0)
Cond_997_0_parts_GT2(TRUE, x0, x1)
Cond_997_0_parts_GT3(TRUE, x0, x1, x2)
1055_1_parts_InvokeMethod(1004_0_parts_Return(x0, x0), x1, x0)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
1063_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x2, x1)
Cond_1063_1_parts_InvokeMethod(TRUE, 1004_0_parts_Return(x0, x1), x2, x1, x3)
1063_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
Cond_1063_1_parts_InvokeMethod2(TRUE, 3772_0_parts_Return(x0), x1, x2, x3)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x0)
1786_1_parts_InvokeMethod(1018_0_parts_Return(x0), x0)
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1)

(38) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 8 less nodes.

(39) TRUE

(40) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
1163_0_parts_Load(x0, x1) → 997_0_parts_GT(x1, x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT(x0 <= 0, x1, x0)
Cond_997_0_parts_GT(TRUE, x1, x0) → 1004_0_parts_Return(x0, x1)
997_0_parts_GT(0, x0) → Cond_997_0_parts_GT1(x0 > 0, 0, x0)
Cond_997_0_parts_GT1(TRUE, 0, x0) → 1018_0_parts_Return(x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT2(x1 > x0 && x1 > 0 && x0 > 0, x1, x0)
Cond_997_0_parts_GT2(TRUE, x1, x0) → 1055_1_parts_InvokeMethod(997_0_parts_GT(x0, x0), x1, x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT3(x1 > 0 && x1 <= x0 && x0 > 0, x1, x0, x2)
Cond_997_0_parts_GT3(TRUE, x1, x0, x2) → 1063_1_parts_InvokeMethod(997_0_parts_GT(x1, x2), x0, x1)
1055_1_parts_InvokeMethod(1004_0_parts_Return(x0, x0), x2, x0) → 1004_0_parts_Return(x0, x2)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2, x1) → 1004_0_parts_Return(x1, x2)
1063_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x3, x1) → Cond_1063_1_parts_InvokeMethod(x1 > 0, 1004_0_parts_Return(x0, x1), x3, x1, x4)
Cond_1063_1_parts_InvokeMethod(TRUE, 1004_0_parts_Return(x0, x1), x3, x1, x4) → 1786_1_parts_InvokeMethod(997_0_parts_GT(x4, x3), x3)
1063_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2) → Cond_1063_1_parts_InvokeMethod2(x2 > 0, 3772_0_parts_Return(x0), x1, x2, x3)
Cond_1063_1_parts_InvokeMethod2(TRUE, 3772_0_parts_Return(x0), x1, x2, x3) → 1786_1_parts_InvokeMethod(997_0_parts_GT(x3, x1), x1)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x0) → 3772_0_parts_Return(x3 + x2)
1786_1_parts_InvokeMethod(1018_0_parts_Return(x0), x0) → 3772_0_parts_Return(arith[1])
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2) → 3772_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(1): COND_1056_0_MAIN_GT(TRUE, java.lang.Object(ARRAY(x0[1])), x1[1], x2[1]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[1])), x1[1] + 1, 0)
(2): 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1056_0_MAIN_GT1(x2[2] <= x0[2], java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
(3): COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
(4): 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_1163_1_MAIN_INVOKEMETHOD(x3[4] > -1 && x1[4] > -1, 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
(5): COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], x1[5] + 1)
(6): 1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_1163_1_MAIN_INVOKEMETHOD1(x3[6] > -1, 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)
(7): COND_1163_1_MAIN_INVOKEMETHOD1(TRUE, 1018_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)
(8): 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_1163_1_MAIN_INVOKEMETHOD2(x3[8] > -1 && x1[8] > 0, 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
(9): COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], x1[9] + 1)
(10): 1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_1163_1_MAIN_INVOKEMETHOD4(x3[10] > 0 && x1[10] > -1, 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
(11): COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], x3[11] + 1)

(1) -> (2), if (java.lang.Object(ARRAY(x0[1])) →* java.lang.Object(ARRAY(x0[2]))∧x1[1] + 1* x1[2]0* x2[2])


(5) -> (2), if (java.lang.Object(ARRAY(x3[5])) →* java.lang.Object(ARRAY(x0[2]))∧x0[5]* x1[2]x1[5] + 1* x2[2])


(7) -> (2), if (java.lang.Object(ARRAY(x3[7])) →* java.lang.Object(ARRAY(x0[2]))∧x0[7]* x1[2]1* x2[2])


(9) -> (2), if (java.lang.Object(ARRAY(x3[9])) →* java.lang.Object(ARRAY(x0[2]))∧x0[9]* x1[2]x1[9] + 1* x2[2])


(11) -> (2), if (java.lang.Object(ARRAY(x1[11])) →* java.lang.Object(ARRAY(x0[2]))∧x2[11]* x1[2]x3[11] + 1* x2[2])


(2) -> (3), if (x2[2] <= x0[2]java.lang.Object(ARRAY(x0[2])) →* java.lang.Object(ARRAY(x0[3]))∧x1[2]* x1[3]x2[2]* x2[3])


(3) -> (4), if (1163_0_parts_Load(x1[3], x2[3]) →* 1004_0_parts_Return(x0[4], x1[4])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[4]))∧x1[3]* x0[4]x2[3]* x1[4])


(4) -> (5), if (x3[4] > -1 && x1[4] > -11004_0_parts_Return(x0[4], x1[4]) →* 1004_0_parts_Return(x0[5], x1[5])∧java.lang.Object(ARRAY(x3[4])) →* java.lang.Object(ARRAY(x3[5]))∧x0[4]* x0[5]x1[4]* x1[5])


(3) -> (6), if (1163_0_parts_Load(x1[3], x2[3]) →* 1018_0_parts_Return(x0[6])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[6]))∧x1[3]* x0[6]x2[3]* 0)


(6) -> (7), if (x3[6] > -11018_0_parts_Return(x0[6]) →* 1018_0_parts_Return(x0[7])∧java.lang.Object(ARRAY(x3[6])) →* java.lang.Object(ARRAY(x3[7]))∧x0[6]* x0[7])


(3) -> (8), if (1163_0_parts_Load(x1[3], x2[3]) →* 1004_0_parts_Return(x0[8], x1[8])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[8]))∧x1[3]* x0[8]x2[3]* x1[8])


(8) -> (9), if (x3[8] > -1 && x1[8] > 01004_0_parts_Return(x0[8], x1[8]) →* 1004_0_parts_Return(x0[9], x1[9])∧java.lang.Object(ARRAY(x3[8])) →* java.lang.Object(ARRAY(x3[9]))∧x0[8]* x0[9]x1[8]* x1[9])


(3) -> (10), if (1163_0_parts_Load(x1[3], x2[3]) →* 3772_0_parts_Return(x0[10])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x1[10]))∧x1[3]* x2[10]x2[3]* x3[10])


(10) -> (11), if (x3[10] > 0 && x1[10] > -13772_0_parts_Return(x0[10]) →* 3772_0_parts_Return(x0[11])∧java.lang.Object(ARRAY(x1[10])) →* java.lang.Object(ARRAY(x1[11]))∧x2[10]* x2[11]x3[10]* x3[11])



The set Q consists of the following terms:
1163_0_parts_Load(x0, x1)
997_0_parts_GT(x0, x1)
Cond_997_0_parts_GT(TRUE, x0, x1)
Cond_997_0_parts_GT1(TRUE, 0, x0)
Cond_997_0_parts_GT2(TRUE, x0, x1)
Cond_997_0_parts_GT3(TRUE, x0, x1, x2)
1055_1_parts_InvokeMethod(1004_0_parts_Return(x0, x0), x1, x0)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
1063_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x2, x1)
Cond_1063_1_parts_InvokeMethod(TRUE, 1004_0_parts_Return(x0, x1), x2, x1, x3)
1063_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
Cond_1063_1_parts_InvokeMethod2(TRUE, 3772_0_parts_Return(x0), x1, x2, x3)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x0)
1786_1_parts_InvokeMethod(1018_0_parts_Return(x0), x0)
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1)

(41) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node.

(42) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
1163_0_parts_Load(x0, x1) → 997_0_parts_GT(x1, x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT(x0 <= 0, x1, x0)
Cond_997_0_parts_GT(TRUE, x1, x0) → 1004_0_parts_Return(x0, x1)
997_0_parts_GT(0, x0) → Cond_997_0_parts_GT1(x0 > 0, 0, x0)
Cond_997_0_parts_GT1(TRUE, 0, x0) → 1018_0_parts_Return(x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT2(x1 > x0 && x1 > 0 && x0 > 0, x1, x0)
Cond_997_0_parts_GT2(TRUE, x1, x0) → 1055_1_parts_InvokeMethod(997_0_parts_GT(x0, x0), x1, x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT3(x1 > 0 && x1 <= x0 && x0 > 0, x1, x0, x2)
Cond_997_0_parts_GT3(TRUE, x1, x0, x2) → 1063_1_parts_InvokeMethod(997_0_parts_GT(x1, x2), x0, x1)
1055_1_parts_InvokeMethod(1004_0_parts_Return(x0, x0), x2, x0) → 1004_0_parts_Return(x0, x2)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2, x1) → 1004_0_parts_Return(x1, x2)
1063_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x3, x1) → Cond_1063_1_parts_InvokeMethod(x1 > 0, 1004_0_parts_Return(x0, x1), x3, x1, x4)
Cond_1063_1_parts_InvokeMethod(TRUE, 1004_0_parts_Return(x0, x1), x3, x1, x4) → 1786_1_parts_InvokeMethod(997_0_parts_GT(x4, x3), x3)
1063_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2) → Cond_1063_1_parts_InvokeMethod2(x2 > 0, 3772_0_parts_Return(x0), x1, x2, x3)
Cond_1063_1_parts_InvokeMethod2(TRUE, 3772_0_parts_Return(x0), x1, x2, x3) → 1786_1_parts_InvokeMethod(997_0_parts_GT(x3, x1), x1)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x0) → 3772_0_parts_Return(x3 + x2)
1786_1_parts_InvokeMethod(1018_0_parts_Return(x0), x0) → 3772_0_parts_Return(arith[1])
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2) → 3772_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(11): COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], x3[11] + 1)
(10): 1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_1163_1_MAIN_INVOKEMETHOD4(x3[10] > 0 && x1[10] > -1, 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
(9): COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], x1[9] + 1)
(8): 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_1163_1_MAIN_INVOKEMETHOD2(x3[8] > -1 && x1[8] > 0, 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
(7): COND_1163_1_MAIN_INVOKEMETHOD1(TRUE, 1018_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)
(6): 1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_1163_1_MAIN_INVOKEMETHOD1(x3[6] > -1, 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)
(5): COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], x1[5] + 1)
(4): 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_1163_1_MAIN_INVOKEMETHOD(x3[4] > -1 && x1[4] > -1, 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
(3): COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
(2): 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1056_0_MAIN_GT1(x2[2] <= x0[2], java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])

(5) -> (2), if (java.lang.Object(ARRAY(x3[5])) →* java.lang.Object(ARRAY(x0[2]))∧x0[5]* x1[2]x1[5] + 1* x2[2])


(7) -> (2), if (java.lang.Object(ARRAY(x3[7])) →* java.lang.Object(ARRAY(x0[2]))∧x0[7]* x1[2]1* x2[2])


(9) -> (2), if (java.lang.Object(ARRAY(x3[9])) →* java.lang.Object(ARRAY(x0[2]))∧x0[9]* x1[2]x1[9] + 1* x2[2])


(11) -> (2), if (java.lang.Object(ARRAY(x1[11])) →* java.lang.Object(ARRAY(x0[2]))∧x2[11]* x1[2]x3[11] + 1* x2[2])


(2) -> (3), if (x2[2] <= x0[2]java.lang.Object(ARRAY(x0[2])) →* java.lang.Object(ARRAY(x0[3]))∧x1[2]* x1[3]x2[2]* x2[3])


(3) -> (4), if (1163_0_parts_Load(x1[3], x2[3]) →* 1004_0_parts_Return(x0[4], x1[4])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[4]))∧x1[3]* x0[4]x2[3]* x1[4])


(4) -> (5), if (x3[4] > -1 && x1[4] > -11004_0_parts_Return(x0[4], x1[4]) →* 1004_0_parts_Return(x0[5], x1[5])∧java.lang.Object(ARRAY(x3[4])) →* java.lang.Object(ARRAY(x3[5]))∧x0[4]* x0[5]x1[4]* x1[5])


(3) -> (6), if (1163_0_parts_Load(x1[3], x2[3]) →* 1018_0_parts_Return(x0[6])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[6]))∧x1[3]* x0[6]x2[3]* 0)


(6) -> (7), if (x3[6] > -11018_0_parts_Return(x0[6]) →* 1018_0_parts_Return(x0[7])∧java.lang.Object(ARRAY(x3[6])) →* java.lang.Object(ARRAY(x3[7]))∧x0[6]* x0[7])


(3) -> (8), if (1163_0_parts_Load(x1[3], x2[3]) →* 1004_0_parts_Return(x0[8], x1[8])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[8]))∧x1[3]* x0[8]x2[3]* x1[8])


(8) -> (9), if (x3[8] > -1 && x1[8] > 01004_0_parts_Return(x0[8], x1[8]) →* 1004_0_parts_Return(x0[9], x1[9])∧java.lang.Object(ARRAY(x3[8])) →* java.lang.Object(ARRAY(x3[9]))∧x0[8]* x0[9]x1[8]* x1[9])


(3) -> (10), if (1163_0_parts_Load(x1[3], x2[3]) →* 3772_0_parts_Return(x0[10])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x1[10]))∧x1[3]* x2[10]x2[3]* x3[10])


(10) -> (11), if (x3[10] > 0 && x1[10] > -13772_0_parts_Return(x0[10]) →* 3772_0_parts_Return(x0[11])∧java.lang.Object(ARRAY(x1[10])) →* java.lang.Object(ARRAY(x1[11]))∧x2[10]* x2[11]x3[10]* x3[11])



The set Q consists of the following terms:
1163_0_parts_Load(x0, x1)
997_0_parts_GT(x0, x1)
Cond_997_0_parts_GT(TRUE, x0, x1)
Cond_997_0_parts_GT1(TRUE, 0, x0)
Cond_997_0_parts_GT2(TRUE, x0, x1)
Cond_997_0_parts_GT3(TRUE, x0, x1, x2)
1055_1_parts_InvokeMethod(1004_0_parts_Return(x0, x0), x1, x0)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
1063_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x2, x1)
Cond_1063_1_parts_InvokeMethod(TRUE, 1004_0_parts_Return(x0, x1), x2, x1, x3)
1063_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
Cond_1063_1_parts_InvokeMethod2(TRUE, 3772_0_parts_Return(x0), x1, x2, x3)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x0)
1786_1_parts_InvokeMethod(1018_0_parts_Return(x0), x0)
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1)

(43) IDPNonInfProof (SOUND transformation)

Used the following options for this NonInfProof:
IDPGPoloSolver: Range: [(-1,2)] IsNat: false Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpCand1ShapeHeuristic@5575b290 Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 0 Max Right Steps: 0

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1)) the following chains were created:
  • We consider the chain COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1)) which results in the following constraint:

    (1)    (COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11])≥NonInfC∧COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11])≥1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))∧(UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥))



    We simplified constraint (1) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (2)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_25] = 0∧[1 + (-1)bso_26] ≥ 0)



    We simplified constraint (2) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (3)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_25] = 0∧[1 + (-1)bso_26] ≥ 0)



    We simplified constraint (3) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (4)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_25] = 0∧[1 + (-1)bso_26] ≥ 0)



    We simplified constraint (4) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (5)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_25] = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_26] ≥ 0)







For Pair 1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) the following chains were created:
  • We consider the chain 1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]), COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1)) which results in the following constraint:

    (6)    (&&(>(x3[10], 0), >(x1[10], -1))=TRUE3772_0_parts_Return(x0[10])=3772_0_parts_Return(x0[11])∧java.lang.Object(ARRAY(x1[10]))=java.lang.Object(ARRAY(x1[11]))∧x2[10]=x2[11]x3[10]=x3[11]1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥))



    We simplified constraint (6) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (7)    (>(x3[10], 0)=TRUE>(x1[10], -1)=TRUE1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥))



    We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (8)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧[(-1)Bound*bni_27] + [(-1)bni_27]x3[10] ≥ 0∧[(-1)bso_28] ≥ 0)



    We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (9)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧[(-1)Bound*bni_27] + [(-1)bni_27]x3[10] ≥ 0∧[(-1)bso_28] ≥ 0)



    We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (10)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧[(-1)Bound*bni_27] + [(-1)bni_27]x3[10] ≥ 0∧[(-1)bso_28] ≥ 0)



    We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (11)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_27] + [(-1)bni_27]x3[10] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_28] ≥ 0)



    We simplified constraint (11) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (12)    (x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_27 + (-1)bni_27] + [(-1)bni_27]x3[10] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_28] ≥ 0)







For Pair COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1)) the following chains were created:
  • We consider the chain COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1)) which results in the following constraint:

    (13)    (COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9])≥NonInfC∧COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9])≥1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))∧(UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥))



    We simplified constraint (13) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (14)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_29] = 0∧[(-1)bso_30] ≥ 0)



    We simplified constraint (14) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (15)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_29] = 0∧[(-1)bso_30] ≥ 0)



    We simplified constraint (15) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (16)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_29] = 0∧[(-1)bso_30] ≥ 0)



    We simplified constraint (16) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (17)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_29] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_30] ≥ 0)







For Pair 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) the following chains were created:
  • We consider the chain 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]), COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1)) which results in the following constraint:

    (18)    (&&(>(x3[8], -1), >(x1[8], 0))=TRUE1004_0_parts_Return(x0[8], x1[8])=1004_0_parts_Return(x0[9], x1[9])∧java.lang.Object(ARRAY(x3[8]))=java.lang.Object(ARRAY(x3[9]))∧x0[8]=x0[9]x1[8]=x1[9]1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥))



    We simplified constraint (18) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (19)    (>(x3[8], -1)=TRUE>(x1[8], 0)=TRUE1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥))



    We simplified constraint (19) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (20)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[(-1)Bound*bni_31] + [(-1)bni_31]x1[8] ≥ 0∧[1 + (-1)bso_32] ≥ 0)



    We simplified constraint (20) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (21)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[(-1)Bound*bni_31] + [(-1)bni_31]x1[8] ≥ 0∧[1 + (-1)bso_32] ≥ 0)



    We simplified constraint (21) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (22)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[(-1)Bound*bni_31] + [(-1)bni_31]x1[8] ≥ 0∧[1 + (-1)bso_32] ≥ 0)



    We simplified constraint (22) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (23)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧0 = 0∧[(-1)Bound*bni_31] + [(-1)bni_31]x1[8] ≥ 0∧0 = 0∧[1 + (-1)bso_32] ≥ 0)



    We simplified constraint (23) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (24)    (x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧0 = 0∧[(-1)Bound*bni_31 + (-1)bni_31] + [(-1)bni_31]x1[8] ≥ 0∧0 = 0∧[1 + (-1)bso_32] ≥ 0)







For Pair COND_1163_1_MAIN_INVOKEMETHOD1(TRUE, 1018_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1) the following chains were created:
  • We consider the chain COND_1163_1_MAIN_INVOKEMETHOD1(TRUE, 1018_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1) which results in the following constraint:

    (25)    (COND_1163_1_MAIN_INVOKEMETHOD1(TRUE, 1018_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0)≥NonInfC∧COND_1163_1_MAIN_INVOKEMETHOD1(TRUE, 1018_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0)≥1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)∧(UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥))



    We simplified constraint (25) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (26)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_33] = 0∧[(-1)bso_34] ≥ 0)



    We simplified constraint (26) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (27)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_33] = 0∧[(-1)bso_34] ≥ 0)



    We simplified constraint (27) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (28)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_33] = 0∧[(-1)bso_34] ≥ 0)



    We simplified constraint (28) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (29)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_33] = 0∧0 = 0∧0 = 0∧[(-1)bso_34] ≥ 0)







For Pair 1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) the following chains were created:
  • We consider the chain 1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0), COND_1163_1_MAIN_INVOKEMETHOD1(TRUE, 1018_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1) which results in the following constraint:

    (30)    (>(x3[6], -1)=TRUE1018_0_parts_Return(x0[6])=1018_0_parts_Return(x0[7])∧java.lang.Object(ARRAY(x3[6]))=java.lang.Object(ARRAY(x3[7]))∧x0[6]=x0[7]1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)≥COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥))



    We simplified constraint (30) using rules (I), (II), (IV) which results in the following new constraint:

    (31)    (>(x3[6], -1)=TRUE1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)≥COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥))



    We simplified constraint (31) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (32)    (x3[6] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧[(-1)Bound*bni_35] ≥ 0∧[1 + (-1)bso_36] ≥ 0)



    We simplified constraint (32) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (33)    (x3[6] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧[(-1)Bound*bni_35] ≥ 0∧[1 + (-1)bso_36] ≥ 0)



    We simplified constraint (33) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (34)    (x3[6] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧[(-1)Bound*bni_35] ≥ 0∧[1 + (-1)bso_36] ≥ 0)



    We simplified constraint (34) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (35)    (x3[6] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧0 = 0∧[(-1)Bound*bni_35] ≥ 0∧0 = 0∧[1 + (-1)bso_36] ≥ 0)







For Pair COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1)) the following chains were created:
  • We consider the chain COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1)) which results in the following constraint:

    (36)    (COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5])≥NonInfC∧COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5])≥1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))∧(UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥))



    We simplified constraint (36) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (37)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_37] = 0∧[1 + (-1)bso_38] ≥ 0)



    We simplified constraint (37) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (38)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_37] = 0∧[1 + (-1)bso_38] ≥ 0)



    We simplified constraint (38) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (39)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_37] = 0∧[1 + (-1)bso_38] ≥ 0)



    We simplified constraint (39) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (40)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_37] = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_38] ≥ 0)







For Pair 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) the following chains were created:
  • We consider the chain 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]), COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1)) which results in the following constraint:

    (41)    (&&(>(x3[4], -1), >(x1[4], -1))=TRUE1004_0_parts_Return(x0[4], x1[4])=1004_0_parts_Return(x0[5], x1[5])∧java.lang.Object(ARRAY(x3[4]))=java.lang.Object(ARRAY(x3[5]))∧x0[4]=x0[5]x1[4]=x1[5]1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥))



    We simplified constraint (41) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (42)    (>(x3[4], -1)=TRUE>(x1[4], -1)=TRUE1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥))



    We simplified constraint (42) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (43)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧[(-1)Bound*bni_39] + [(-1)bni_39]x1[4] ≥ 0∧[(-1)bso_40] ≥ 0)



    We simplified constraint (43) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (44)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧[(-1)Bound*bni_39] + [(-1)bni_39]x1[4] ≥ 0∧[(-1)bso_40] ≥ 0)



    We simplified constraint (44) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (45)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧[(-1)Bound*bni_39] + [(-1)bni_39]x1[4] ≥ 0∧[(-1)bso_40] ≥ 0)



    We simplified constraint (45) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (46)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧0 = 0∧[(-1)Bound*bni_39] + [(-1)bni_39]x1[4] ≥ 0∧0 = 0∧[(-1)bso_40] ≥ 0)







For Pair COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) the following chains were created:
  • We consider the chain COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) which results in the following constraint:

    (47)    (COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])≥NonInfC∧COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])≥1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])∧(UIncreasing(1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥))



    We simplified constraint (47) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (48)    ((UIncreasing(1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_41] = 0∧[(-1)bso_42] ≥ 0)



    We simplified constraint (48) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (49)    ((UIncreasing(1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_41] = 0∧[(-1)bso_42] ≥ 0)



    We simplified constraint (49) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (50)    ((UIncreasing(1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_41] = 0∧[(-1)bso_42] ≥ 0)



    We simplified constraint (50) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (51)    ((UIncreasing(1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_41] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_42] ≥ 0)







For Pair 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) the following chains were created:
  • We consider the chain 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]), COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) which results in the following constraint:

    (52)    (<=(x2[2], x0[2])=TRUEjava.lang.Object(ARRAY(x0[2]))=java.lang.Object(ARRAY(x0[3]))∧x1[2]=x1[3]x2[2]=x2[3]1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥NonInfC∧1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])∧(UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥))



    We simplified constraint (52) using rules (I), (II), (IV) which results in the following new constraint:

    (53)    (<=(x2[2], x0[2])=TRUE1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥NonInfC∧1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])∧(UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥))



    We simplified constraint (53) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (54)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)Bound*bni_43] + [(-1)bni_43]x2[2] ≥ 0∧[(-1)bso_44] ≥ 0)



    We simplified constraint (54) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (55)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)Bound*bni_43] + [(-1)bni_43]x2[2] ≥ 0∧[(-1)bso_44] ≥ 0)



    We simplified constraint (55) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (56)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)Bound*bni_43] + [(-1)bni_43]x2[2] ≥ 0∧[(-1)bso_44] ≥ 0)



    We simplified constraint (56) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (57)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[(-1)Bound*bni_43] + [(-1)bni_43]x2[2] ≥ 0∧0 = 0∧[(-1)bso_44] ≥ 0)



    We simplified constraint (57) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (58)    (x0[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[(-1)Bound*bni_43] + [(-1)bni_43]x2[2] ≥ 0∧0 = 0∧[(-1)bso_44] ≥ 0)



    We simplified constraint (58) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (59)    (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[(-1)Bound*bni_43] + [(-1)bni_43]x2[2] ≥ 0∧0 = 0∧[(-1)bso_44] ≥ 0)


    (60)    (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[(-1)Bound*bni_43] + [bni_43]x2[2] ≥ 0∧0 = 0∧[(-1)bso_44] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))
    • ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_25] = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_26] ≥ 0)

  • 1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
    • (x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_27 + (-1)bni_27] + [(-1)bni_27]x3[10] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_28] ≥ 0)

  • COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))
    • ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_29] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_30] ≥ 0)

  • 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
    • (x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧0 = 0∧[(-1)Bound*bni_31 + (-1)bni_31] + [(-1)bni_31]x1[8] ≥ 0∧0 = 0∧[1 + (-1)bso_32] ≥ 0)

  • COND_1163_1_MAIN_INVOKEMETHOD1(TRUE, 1018_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)
    • ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_33] = 0∧0 = 0∧0 = 0∧[(-1)bso_34] ≥ 0)

  • 1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)
    • (x3[6] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧0 = 0∧[(-1)Bound*bni_35] ≥ 0∧0 = 0∧[1 + (-1)bso_36] ≥ 0)

  • COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))
    • ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_37] = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_38] ≥ 0)

  • 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
    • (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧0 = 0∧[(-1)Bound*bni_39] + [(-1)bni_39]x1[4] ≥ 0∧0 = 0∧[(-1)bso_40] ≥ 0)

  • COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
    • ((UIncreasing(1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_41] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_42] ≥ 0)

  • 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
    • (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[(-1)Bound*bni_43] + [(-1)bni_43]x2[2] ≥ 0∧0 = 0∧[(-1)bso_44] ≥ 0)
    • (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[(-1)Bound*bni_43] + [bni_43]x2[2] ≥ 0∧0 = 0∧[(-1)bso_44] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(1163_0_parts_Load(x1, x2)) = [1] + [-1]x2 + [-1]x1   
POL(997_0_parts_GT(x1, x2)) = [-1] + [-1]x1 + [-1]x2   
POL(Cond_997_0_parts_GT(x1, x2, x3)) = [-1] + [-1]x3 + [-1]x2   
POL(<=(x1, x2)) = [-1]   
POL(0) = 0   
POL(1004_0_parts_Return(x1, x2)) = [-1] + [-1]x1 + [-1]x2   
POL(Cond_997_0_parts_GT1(x1, x2, x3)) = [2] + [2]x3   
POL(>(x1, x2)) = [-1]   
POL(1018_0_parts_Return(x1)) = x1   
POL(Cond_997_0_parts_GT2(x1, x2, x3)) = [-1] + [-1]x3 + [-1]x2   
POL(&&(x1, x2)) = [-1]   
POL(1055_1_parts_InvokeMethod(x1, x2, x3)) = [2] + [-1]x1 + [-1]x3 + [-1]x2   
POL(Cond_997_0_parts_GT3(x1, x2, x3, x4)) = [-1] + [-1]x3 + [-1]x2   
POL(1063_1_parts_InvokeMethod(x1, x2, x3)) = [-1] + [-1]x2 + [-1]x3   
POL(3772_0_parts_Return(x1)) = x1   
POL(Cond_1063_1_parts_InvokeMethod(x1, x2, x3, x4, x5)) = [-1] + [-1]x4 + [-1]x3   
POL(1786_1_parts_InvokeMethod(x1, x2)) = [-1] + [-1]x2   
POL(Cond_1063_1_parts_InvokeMethod2(x1, x2, x3, x4, x5)) = [-1] + [-1]x4 + [-1]x3   
POL(+(x1, x2)) = x1 + x2   
POL(COND_1163_1_MAIN_INVOKEMETHOD4(x1, x2, x3, x4, x5)) = [-1]x5   
POL(java.lang.Object(x1)) = x1   
POL(ARRAY(x1)) = x1   
POL(1056_0_MAIN_GT(x1, x2, x3)) = [-1]x3   
POL(1) = [1]   
POL(1163_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [-1]x4   
POL(-1) = [-1]   
POL(COND_1163_1_MAIN_INVOKEMETHOD2(x1, x2, x3, x4, x5)) = [-1] + [-1]x5   
POL(COND_1163_1_MAIN_INVOKEMETHOD1(x1, x2, x3, x4, x5)) = [-1]   
POL(COND_1163_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4, x5)) = [-1]x5   
POL(COND_1056_0_MAIN_GT1(x1, x2, x3, x4)) = [-1]x4   

The following pairs are in P>:

COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))
1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)
COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))

The following pairs are in Pbound:

1163_1_MAIN_INVOKEMETHOD(1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_1163_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 1018_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)

The following pairs are in P:

1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))
COND_1163_1_MAIN_INVOKEMETHOD1(TRUE, 1018_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)
1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])

At least the following rules have been oriented under context sensitive arithmetic replacement:

997_0_parts_GT(x1, x0)1Cond_997_0_parts_GT(<=(x0, 0), x1, x0)1
997_0_parts_GT(x1, x0)1Cond_997_0_parts_GT2(&&(&&(>(x1, x0), >(x1, 0)), >(x0, 0)), x1, x0)1
1063_1_parts_InvokeMethod(997_0_parts_GT(x1, x2), x0, x1)1Cond_997_0_parts_GT3(TRUE, x1, x0, x2)1
Cond_1063_1_parts_InvokeMethod(>(x1, 0), 1004_0_parts_Return(x0, x1), x3, x1, x4)11063_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x3, x1)1
Cond_997_0_parts_GT(TRUE, x1, x0)11004_0_parts_Return(x0, x1)1

(44) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
1163_0_parts_Load(x0, x1) → 997_0_parts_GT(x1, x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT(x0 <= 0, x1, x0)
Cond_997_0_parts_GT(TRUE, x1, x0) → 1004_0_parts_Return(x0, x1)
997_0_parts_GT(0, x0) → Cond_997_0_parts_GT1(x0 > 0, 0, x0)
Cond_997_0_parts_GT1(TRUE, 0, x0) → 1018_0_parts_Return(x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT2(x1 > x0 && x1 > 0 && x0 > 0, x1, x0)
Cond_997_0_parts_GT2(TRUE, x1, x0) → 1055_1_parts_InvokeMethod(997_0_parts_GT(x0, x0), x1, x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT3(x1 > 0 && x1 <= x0 && x0 > 0, x1, x0, x2)
Cond_997_0_parts_GT3(TRUE, x1, x0, x2) → 1063_1_parts_InvokeMethod(997_0_parts_GT(x1, x2), x0, x1)
1055_1_parts_InvokeMethod(1004_0_parts_Return(x0, x0), x2, x0) → 1004_0_parts_Return(x0, x2)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2, x1) → 1004_0_parts_Return(x1, x2)
1063_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x3, x1) → Cond_1063_1_parts_InvokeMethod(x1 > 0, 1004_0_parts_Return(x0, x1), x3, x1, x4)
Cond_1063_1_parts_InvokeMethod(TRUE, 1004_0_parts_Return(x0, x1), x3, x1, x4) → 1786_1_parts_InvokeMethod(997_0_parts_GT(x4, x3), x3)
1063_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2) → Cond_1063_1_parts_InvokeMethod2(x2 > 0, 3772_0_parts_Return(x0), x1, x2, x3)
Cond_1063_1_parts_InvokeMethod2(TRUE, 3772_0_parts_Return(x0), x1, x2, x3) → 1786_1_parts_InvokeMethod(997_0_parts_GT(x3, x1), x1)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x0) → 3772_0_parts_Return(x3 + x2)
1786_1_parts_InvokeMethod(1018_0_parts_Return(x0), x0) → 3772_0_parts_Return(arith[1])
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2) → 3772_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(11): COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], x3[11] + 1)
(10): 1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_1163_1_MAIN_INVOKEMETHOD4(x3[10] > 0 && x1[10] > -1, 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
(9): COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], x1[9] + 1)
(8): 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_1163_1_MAIN_INVOKEMETHOD2(x3[8] > -1 && x1[8] > 0, 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
(7): COND_1163_1_MAIN_INVOKEMETHOD1(TRUE, 1018_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)
(5): COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], x1[5] + 1)
(4): 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_1163_1_MAIN_INVOKEMETHOD(x3[4] > -1 && x1[4] > -1, 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
(3): COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
(2): 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1056_0_MAIN_GT1(x2[2] <= x0[2], java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])

(5) -> (2), if (java.lang.Object(ARRAY(x3[5])) →* java.lang.Object(ARRAY(x0[2]))∧x0[5]* x1[2]x1[5] + 1* x2[2])


(7) -> (2), if (java.lang.Object(ARRAY(x3[7])) →* java.lang.Object(ARRAY(x0[2]))∧x0[7]* x1[2]1* x2[2])


(9) -> (2), if (java.lang.Object(ARRAY(x3[9])) →* java.lang.Object(ARRAY(x0[2]))∧x0[9]* x1[2]x1[9] + 1* x2[2])


(11) -> (2), if (java.lang.Object(ARRAY(x1[11])) →* java.lang.Object(ARRAY(x0[2]))∧x2[11]* x1[2]x3[11] + 1* x2[2])


(2) -> (3), if (x2[2] <= x0[2]java.lang.Object(ARRAY(x0[2])) →* java.lang.Object(ARRAY(x0[3]))∧x1[2]* x1[3]x2[2]* x2[3])


(3) -> (4), if (1163_0_parts_Load(x1[3], x2[3]) →* 1004_0_parts_Return(x0[4], x1[4])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[4]))∧x1[3]* x0[4]x2[3]* x1[4])


(4) -> (5), if (x3[4] > -1 && x1[4] > -11004_0_parts_Return(x0[4], x1[4]) →* 1004_0_parts_Return(x0[5], x1[5])∧java.lang.Object(ARRAY(x3[4])) →* java.lang.Object(ARRAY(x3[5]))∧x0[4]* x0[5]x1[4]* x1[5])


(3) -> (8), if (1163_0_parts_Load(x1[3], x2[3]) →* 1004_0_parts_Return(x0[8], x1[8])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[8]))∧x1[3]* x0[8]x2[3]* x1[8])


(8) -> (9), if (x3[8] > -1 && x1[8] > 01004_0_parts_Return(x0[8], x1[8]) →* 1004_0_parts_Return(x0[9], x1[9])∧java.lang.Object(ARRAY(x3[8])) →* java.lang.Object(ARRAY(x3[9]))∧x0[8]* x0[9]x1[8]* x1[9])


(3) -> (10), if (1163_0_parts_Load(x1[3], x2[3]) →* 3772_0_parts_Return(x0[10])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x1[10]))∧x1[3]* x2[10]x2[3]* x3[10])


(10) -> (11), if (x3[10] > 0 && x1[10] > -13772_0_parts_Return(x0[10]) →* 3772_0_parts_Return(x0[11])∧java.lang.Object(ARRAY(x1[10])) →* java.lang.Object(ARRAY(x1[11]))∧x2[10]* x2[11]x3[10]* x3[11])



The set Q consists of the following terms:
1163_0_parts_Load(x0, x1)
997_0_parts_GT(x0, x1)
Cond_997_0_parts_GT(TRUE, x0, x1)
Cond_997_0_parts_GT1(TRUE, 0, x0)
Cond_997_0_parts_GT2(TRUE, x0, x1)
Cond_997_0_parts_GT3(TRUE, x0, x1, x2)
1055_1_parts_InvokeMethod(1004_0_parts_Return(x0, x0), x1, x0)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
1063_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x2, x1)
Cond_1063_1_parts_InvokeMethod(TRUE, 1004_0_parts_Return(x0, x1), x2, x1, x3)
1063_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
Cond_1063_1_parts_InvokeMethod2(TRUE, 3772_0_parts_Return(x0), x1, x2, x3)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x0)
1786_1_parts_InvokeMethod(1018_0_parts_Return(x0), x0)
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1)

(45) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node.

(46) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
1163_0_parts_Load(x0, x1) → 997_0_parts_GT(x1, x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT(x0 <= 0, x1, x0)
Cond_997_0_parts_GT(TRUE, x1, x0) → 1004_0_parts_Return(x0, x1)
997_0_parts_GT(0, x0) → Cond_997_0_parts_GT1(x0 > 0, 0, x0)
Cond_997_0_parts_GT1(TRUE, 0, x0) → 1018_0_parts_Return(x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT2(x1 > x0 && x1 > 0 && x0 > 0, x1, x0)
Cond_997_0_parts_GT2(TRUE, x1, x0) → 1055_1_parts_InvokeMethod(997_0_parts_GT(x0, x0), x1, x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT3(x1 > 0 && x1 <= x0 && x0 > 0, x1, x0, x2)
Cond_997_0_parts_GT3(TRUE, x1, x0, x2) → 1063_1_parts_InvokeMethod(997_0_parts_GT(x1, x2), x0, x1)
1055_1_parts_InvokeMethod(1004_0_parts_Return(x0, x0), x2, x0) → 1004_0_parts_Return(x0, x2)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2, x1) → 1004_0_parts_Return(x1, x2)
1063_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x3, x1) → Cond_1063_1_parts_InvokeMethod(x1 > 0, 1004_0_parts_Return(x0, x1), x3, x1, x4)
Cond_1063_1_parts_InvokeMethod(TRUE, 1004_0_parts_Return(x0, x1), x3, x1, x4) → 1786_1_parts_InvokeMethod(997_0_parts_GT(x4, x3), x3)
1063_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2) → Cond_1063_1_parts_InvokeMethod2(x2 > 0, 3772_0_parts_Return(x0), x1, x2, x3)
Cond_1063_1_parts_InvokeMethod2(TRUE, 3772_0_parts_Return(x0), x1, x2, x3) → 1786_1_parts_InvokeMethod(997_0_parts_GT(x3, x1), x1)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x0) → 3772_0_parts_Return(x3 + x2)
1786_1_parts_InvokeMethod(1018_0_parts_Return(x0), x0) → 3772_0_parts_Return(arith[1])
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2) → 3772_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(10): 1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_1163_1_MAIN_INVOKEMETHOD4(x3[10] > 0 && x1[10] > -1, 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
(9): COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], x1[9] + 1)
(8): 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_1163_1_MAIN_INVOKEMETHOD2(x3[8] > -1 && x1[8] > 0, 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
(5): COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], x1[5] + 1)
(4): 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_1163_1_MAIN_INVOKEMETHOD(x3[4] > -1 && x1[4] > -1, 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
(3): COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
(2): 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1056_0_MAIN_GT1(x2[2] <= x0[2], java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
(11): COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], x3[11] + 1)

(5) -> (2), if (java.lang.Object(ARRAY(x3[5])) →* java.lang.Object(ARRAY(x0[2]))∧x0[5]* x1[2]x1[5] + 1* x2[2])


(9) -> (2), if (java.lang.Object(ARRAY(x3[9])) →* java.lang.Object(ARRAY(x0[2]))∧x0[9]* x1[2]x1[9] + 1* x2[2])


(11) -> (2), if (java.lang.Object(ARRAY(x1[11])) →* java.lang.Object(ARRAY(x0[2]))∧x2[11]* x1[2]x3[11] + 1* x2[2])


(2) -> (3), if (x2[2] <= x0[2]java.lang.Object(ARRAY(x0[2])) →* java.lang.Object(ARRAY(x0[3]))∧x1[2]* x1[3]x2[2]* x2[3])


(3) -> (4), if (1163_0_parts_Load(x1[3], x2[3]) →* 1004_0_parts_Return(x0[4], x1[4])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[4]))∧x1[3]* x0[4]x2[3]* x1[4])


(4) -> (5), if (x3[4] > -1 && x1[4] > -11004_0_parts_Return(x0[4], x1[4]) →* 1004_0_parts_Return(x0[5], x1[5])∧java.lang.Object(ARRAY(x3[4])) →* java.lang.Object(ARRAY(x3[5]))∧x0[4]* x0[5]x1[4]* x1[5])


(3) -> (8), if (1163_0_parts_Load(x1[3], x2[3]) →* 1004_0_parts_Return(x0[8], x1[8])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[8]))∧x1[3]* x0[8]x2[3]* x1[8])


(8) -> (9), if (x3[8] > -1 && x1[8] > 01004_0_parts_Return(x0[8], x1[8]) →* 1004_0_parts_Return(x0[9], x1[9])∧java.lang.Object(ARRAY(x3[8])) →* java.lang.Object(ARRAY(x3[9]))∧x0[8]* x0[9]x1[8]* x1[9])


(3) -> (10), if (1163_0_parts_Load(x1[3], x2[3]) →* 3772_0_parts_Return(x0[10])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x1[10]))∧x1[3]* x2[10]x2[3]* x3[10])


(10) -> (11), if (x3[10] > 0 && x1[10] > -13772_0_parts_Return(x0[10]) →* 3772_0_parts_Return(x0[11])∧java.lang.Object(ARRAY(x1[10])) →* java.lang.Object(ARRAY(x1[11]))∧x2[10]* x2[11]x3[10]* x3[11])



The set Q consists of the following terms:
1163_0_parts_Load(x0, x1)
997_0_parts_GT(x0, x1)
Cond_997_0_parts_GT(TRUE, x0, x1)
Cond_997_0_parts_GT1(TRUE, 0, x0)
Cond_997_0_parts_GT2(TRUE, x0, x1)
Cond_997_0_parts_GT3(TRUE, x0, x1, x2)
1055_1_parts_InvokeMethod(1004_0_parts_Return(x0, x0), x1, x0)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
1063_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x2, x1)
Cond_1063_1_parts_InvokeMethod(TRUE, 1004_0_parts_Return(x0, x1), x2, x1, x3)
1063_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
Cond_1063_1_parts_InvokeMethod2(TRUE, 3772_0_parts_Return(x0), x1, x2, x3)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x0)
1786_1_parts_InvokeMethod(1018_0_parts_Return(x0), x0)
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1)

(47) IDPNonInfProof (SOUND transformation)

Used the following options for this NonInfProof:
IDPGPoloSolver: Range: [(-1,2)] IsNat: false Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpCand1ShapeHeuristic@5575b290 Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 0 Max Right Steps: 0

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) the following chains were created:
  • We consider the chain 1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]), COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1)) which results in the following constraint:

    (1)    (&&(>(x3[10], 0), >(x1[10], -1))=TRUE3772_0_parts_Return(x0[10])=3772_0_parts_Return(x0[11])∧java.lang.Object(ARRAY(x1[10]))=java.lang.Object(ARRAY(x1[11]))∧x2[10]=x2[11]x3[10]=x3[11]1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥))



    We simplified constraint (1) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (2)    (>(x3[10], 0)=TRUE>(x1[10], -1)=TRUE1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧[bni_24 + (-1)Bound*bni_24] + [bni_24]x1[10] + [(-1)bni_24]x3[10] ≥ 0∧[1 + (-1)bso_25] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧[bni_24 + (-1)Bound*bni_24] + [bni_24]x1[10] + [(-1)bni_24]x3[10] ≥ 0∧[1 + (-1)bso_25] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧[bni_24 + (-1)Bound*bni_24] + [bni_24]x1[10] + [(-1)bni_24]x3[10] ≥ 0∧[1 + (-1)bso_25] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧0 = 0∧0 = 0∧[bni_24 + (-1)Bound*bni_24] + [bni_24]x1[10] + [(-1)bni_24]x3[10] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_25] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_24] + [bni_24]x1[10] + [(-1)bni_24]x3[10] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_25] ≥ 0)







For Pair COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1)) the following chains were created:
  • We consider the chain COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1)) which results in the following constraint:

    (8)    (COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9])≥NonInfC∧COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9])≥1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))∧(UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥))



    We simplified constraint (8) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (9)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_26] = 0∧[1 + (-1)bso_27] ≥ 0)



    We simplified constraint (9) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (10)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_26] = 0∧[1 + (-1)bso_27] ≥ 0)



    We simplified constraint (10) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (11)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_26] = 0∧[1 + (-1)bso_27] ≥ 0)



    We simplified constraint (11) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (12)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_26] = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_27] ≥ 0)







For Pair 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) the following chains were created:
  • We consider the chain 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]), COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1)) which results in the following constraint:

    (13)    (&&(>(x3[8], -1), >(x1[8], 0))=TRUE1004_0_parts_Return(x0[8], x1[8])=1004_0_parts_Return(x0[9], x1[9])∧java.lang.Object(ARRAY(x3[8]))=java.lang.Object(ARRAY(x3[9]))∧x0[8]=x0[9]x1[8]=x1[9]1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥))



    We simplified constraint (13) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (14)    (>(x3[8], -1)=TRUE>(x1[8], 0)=TRUE1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥))



    We simplified constraint (14) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (15)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[bni_28 + (-1)Bound*bni_28] + [(-1)bni_28]x1[8] + [bni_28]x3[8] ≥ 0∧[(-1)bso_29] ≥ 0)



    We simplified constraint (15) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (16)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[bni_28 + (-1)Bound*bni_28] + [(-1)bni_28]x1[8] + [bni_28]x3[8] ≥ 0∧[(-1)bso_29] ≥ 0)



    We simplified constraint (16) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (17)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[bni_28 + (-1)Bound*bni_28] + [(-1)bni_28]x1[8] + [bni_28]x3[8] ≥ 0∧[(-1)bso_29] ≥ 0)



    We simplified constraint (17) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (18)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧0 = 0∧[bni_28 + (-1)Bound*bni_28] + [(-1)bni_28]x1[8] + [bni_28]x3[8] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)



    We simplified constraint (18) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (19)    (x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧0 = 0∧[(-1)Bound*bni_28] + [(-1)bni_28]x1[8] + [bni_28]x3[8] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)







For Pair COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1)) the following chains were created:
  • We consider the chain COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1)) which results in the following constraint:

    (20)    (COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5])≥NonInfC∧COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5])≥1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))∧(UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥))



    We simplified constraint (20) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (21)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_30] = 0∧[(-1)bso_31] ≥ 0)



    We simplified constraint (21) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (22)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_30] = 0∧[(-1)bso_31] ≥ 0)



    We simplified constraint (22) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (23)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_30] = 0∧[(-1)bso_31] ≥ 0)



    We simplified constraint (23) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (24)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_30] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_31] ≥ 0)







For Pair 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) the following chains were created:
  • We consider the chain 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]), COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1)) which results in the following constraint:

    (25)    (&&(>(x3[4], -1), >(x1[4], -1))=TRUE1004_0_parts_Return(x0[4], x1[4])=1004_0_parts_Return(x0[5], x1[5])∧java.lang.Object(ARRAY(x3[4]))=java.lang.Object(ARRAY(x3[5]))∧x0[4]=x0[5]x1[4]=x1[5]1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥))



    We simplified constraint (25) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (26)    (>(x3[4], -1)=TRUE>(x1[4], -1)=TRUE1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥NonInfC∧1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])∧(UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥))



    We simplified constraint (26) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (27)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧[bni_32 + (-1)Bound*bni_32] + [(-1)bni_32]x1[4] + [bni_32]x3[4] ≥ 0∧[1 + (-1)bso_33] ≥ 0)



    We simplified constraint (27) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (28)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧[bni_32 + (-1)Bound*bni_32] + [(-1)bni_32]x1[4] + [bni_32]x3[4] ≥ 0∧[1 + (-1)bso_33] ≥ 0)



    We simplified constraint (28) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (29)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧[bni_32 + (-1)Bound*bni_32] + [(-1)bni_32]x1[4] + [bni_32]x3[4] ≥ 0∧[1 + (-1)bso_33] ≥ 0)



    We simplified constraint (29) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (30)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧0 = 0∧[bni_32 + (-1)Bound*bni_32] + [(-1)bni_32]x1[4] + [bni_32]x3[4] ≥ 0∧0 = 0∧[1 + (-1)bso_33] ≥ 0)







For Pair COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) the following chains were created:
  • We consider the chain COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) which results in the following constraint:

    (31)    (COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])≥NonInfC∧COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])≥1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])∧(UIncreasing(1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥))



    We simplified constraint (31) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (32)    ((UIncreasing(1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_34] = 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (32) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (33)    ((UIncreasing(1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_34] = 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (33) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (34)    ((UIncreasing(1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_34] = 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (34) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (35)    ((UIncreasing(1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_34] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_35] ≥ 0)







For Pair 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) the following chains were created:
  • We consider the chain 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]), COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) which results in the following constraint:

    (36)    (<=(x2[2], x0[2])=TRUEjava.lang.Object(ARRAY(x0[2]))=java.lang.Object(ARRAY(x0[3]))∧x1[2]=x1[3]x2[2]=x2[3]1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥NonInfC∧1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])∧(UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥))



    We simplified constraint (36) using rules (I), (II), (IV) which results in the following new constraint:

    (37)    (<=(x2[2], x0[2])=TRUE1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥NonInfC∧1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])∧(UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥))



    We simplified constraint (37) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (38)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[bni_36 + (-1)Bound*bni_36] + [(-1)bni_36]x2[2] + [bni_36]x0[2] ≥ 0∧[(-1)bso_37] ≥ 0)



    We simplified constraint (38) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (39)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[bni_36 + (-1)Bound*bni_36] + [(-1)bni_36]x2[2] + [bni_36]x0[2] ≥ 0∧[(-1)bso_37] ≥ 0)



    We simplified constraint (39) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (40)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[bni_36 + (-1)Bound*bni_36] + [(-1)bni_36]x2[2] + [bni_36]x0[2] ≥ 0∧[(-1)bso_37] ≥ 0)



    We simplified constraint (40) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (41)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[bni_36 + (-1)Bound*bni_36] + [(-1)bni_36]x2[2] + [bni_36]x0[2] ≥ 0∧0 = 0∧[(-1)bso_37] ≥ 0)



    We simplified constraint (41) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (42)    (x0[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[bni_36 + (-1)Bound*bni_36] + [bni_36]x0[2] ≥ 0∧0 = 0∧[(-1)bso_37] ≥ 0)



    We simplified constraint (42) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (43)    (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[bni_36 + (-1)Bound*bni_36] + [bni_36]x0[2] ≥ 0∧0 = 0∧[(-1)bso_37] ≥ 0)


    (44)    (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[bni_36 + (-1)Bound*bni_36] + [bni_36]x0[2] ≥ 0∧0 = 0∧[(-1)bso_37] ≥ 0)







For Pair COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1)) the following chains were created:
  • We consider the chain COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1)) which results in the following constraint:

    (45)    (COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11])≥NonInfC∧COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11])≥1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))∧(UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥))



    We simplified constraint (45) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (46)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_38] = 0∧[(-1)bso_39] ≥ 0)



    We simplified constraint (46) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (47)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_38] = 0∧[(-1)bso_39] ≥ 0)



    We simplified constraint (47) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (48)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_38] = 0∧[(-1)bso_39] ≥ 0)



    We simplified constraint (48) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (49)    ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_38] = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_39] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
    • (x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_24] + [bni_24]x1[10] + [(-1)bni_24]x3[10] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_25] ≥ 0)

  • COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))
    • ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_26] = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_27] ≥ 0)

  • 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
    • (x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧0 = 0∧[(-1)Bound*bni_28] + [(-1)bni_28]x1[8] + [bni_28]x3[8] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)

  • COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))
    • ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_30] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_31] ≥ 0)

  • 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
    • (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧0 = 0∧[bni_32 + (-1)Bound*bni_32] + [(-1)bni_32]x1[4] + [bni_32]x3[4] ≥ 0∧0 = 0∧[1 + (-1)bso_33] ≥ 0)

  • COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
    • ((UIncreasing(1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_34] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_35] ≥ 0)

  • 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
    • (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[bni_36 + (-1)Bound*bni_36] + [bni_36]x0[2] ≥ 0∧0 = 0∧[(-1)bso_37] ≥ 0)
    • (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[bni_36 + (-1)Bound*bni_36] + [bni_36]x0[2] ≥ 0∧0 = 0∧[(-1)bso_37] ≥ 0)

  • COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))
    • ((UIncreasing(1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_38] = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_39] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(1163_0_parts_Load(x1, x2)) = [1] + [-1]x2 + [-1]x1   
POL(997_0_parts_GT(x1, x2)) = [-1] + [-1]x1 + [-1]x2   
POL(Cond_997_0_parts_GT(x1, x2, x3)) = [-1] + [-1]x3 + [-1]x2   
POL(<=(x1, x2)) = [-1]   
POL(0) = 0   
POL(1004_0_parts_Return(x1, x2)) = [-1]x1 + [-1]x2   
POL(Cond_997_0_parts_GT1(x1, x2, x3)) = [2] + [2]x3   
POL(>(x1, x2)) = [-1]   
POL(1018_0_parts_Return(x1)) = x1   
POL(Cond_997_0_parts_GT2(x1, x2, x3)) = [-1] + [-1]x3 + [-1]x2   
POL(&&(x1, x2)) = [-1]   
POL(1055_1_parts_InvokeMethod(x1, x2, x3)) = [2] + [-1]x1 + [-1]x3 + [-1]x2   
POL(Cond_997_0_parts_GT3(x1, x2, x3, x4)) = [1] + [-1]x3 + [-1]x2   
POL(1063_1_parts_InvokeMethod(x1, x2, x3)) = [1] + x1 + [-1]x2 + [-1]x3   
POL(3772_0_parts_Return(x1)) = x1   
POL(Cond_1063_1_parts_InvokeMethod(x1, x2, x3, x4, x5)) = [-1] + [-1]x4 + [-1]x3 + x2   
POL(1786_1_parts_InvokeMethod(x1, x2)) = [-1] + x1 + [-1]x2   
POL(Cond_1063_1_parts_InvokeMethod2(x1, x2, x3, x4, x5)) = [-1] + [-1]x4 + [-1]x3 + x2   
POL(+(x1, x2)) = x1 + x2   
POL(1163_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [1] + x2 + [-1]x4   
POL(java.lang.Object(x1)) = x1   
POL(ARRAY(x1)) = x1   
POL(COND_1163_1_MAIN_INVOKEMETHOD4(x1, x2, x3, x4, x5)) = x3 + [-1]x5   
POL(-1) = [-1]   
POL(COND_1163_1_MAIN_INVOKEMETHOD2(x1, x2, x3, x4, x5)) = [1] + x3 + [-1]x5   
POL(1056_0_MAIN_GT(x1, x2, x3)) = [1] + [-1]x3 + x1   
POL(1) = [1]   
POL(COND_1163_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4, x5)) = x3 + [-1]x5   
POL(COND_1056_0_MAIN_GT1(x1, x2, x3, x4)) = [1] + x2 + [-1]x4   

The following pairs are in P>:

1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_1163_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))
1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_1163_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])

The following pairs are in Pbound:

1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])

The following pairs are in P:

1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_1163_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))
COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1056_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))

At least the following rules have been oriented under context sensitive arithmetic replacement:

1163_0_parts_Load(x0, x1)1997_0_parts_GT(x1, x0)1
Cond_997_0_parts_GT(<=(x0, 0), x1, x0)1997_0_parts_GT(x1, x0)1
Cond_997_0_parts_GT3(&&(&&(>(x1, 0), <=(x1, x0)), >(x0, 0)), x1, x0, x2)1997_0_parts_GT(x1, x0)1
1063_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x3, x1)1Cond_1063_1_parts_InvokeMethod(>(x1, 0), 1004_0_parts_Return(x0, x1), x3, x1, x4)1

(48) Complex Obligation (AND)

(49) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
1163_0_parts_Load(x0, x1) → 997_0_parts_GT(x1, x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT(x0 <= 0, x1, x0)
Cond_997_0_parts_GT(TRUE, x1, x0) → 1004_0_parts_Return(x0, x1)
997_0_parts_GT(0, x0) → Cond_997_0_parts_GT1(x0 > 0, 0, x0)
Cond_997_0_parts_GT1(TRUE, 0, x0) → 1018_0_parts_Return(x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT2(x1 > x0 && x1 > 0 && x0 > 0, x1, x0)
Cond_997_0_parts_GT2(TRUE, x1, x0) → 1055_1_parts_InvokeMethod(997_0_parts_GT(x0, x0), x1, x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT3(x1 > 0 && x1 <= x0 && x0 > 0, x1, x0, x2)
Cond_997_0_parts_GT3(TRUE, x1, x0, x2) → 1063_1_parts_InvokeMethod(997_0_parts_GT(x1, x2), x0, x1)
1055_1_parts_InvokeMethod(1004_0_parts_Return(x0, x0), x2, x0) → 1004_0_parts_Return(x0, x2)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2, x1) → 1004_0_parts_Return(x1, x2)
1063_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x3, x1) → Cond_1063_1_parts_InvokeMethod(x1 > 0, 1004_0_parts_Return(x0, x1), x3, x1, x4)
Cond_1063_1_parts_InvokeMethod(TRUE, 1004_0_parts_Return(x0, x1), x3, x1, x4) → 1786_1_parts_InvokeMethod(997_0_parts_GT(x4, x3), x3)
1063_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2) → Cond_1063_1_parts_InvokeMethod2(x2 > 0, 3772_0_parts_Return(x0), x1, x2, x3)
Cond_1063_1_parts_InvokeMethod2(TRUE, 3772_0_parts_Return(x0), x1, x2, x3) → 1786_1_parts_InvokeMethod(997_0_parts_GT(x3, x1), x1)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x0) → 3772_0_parts_Return(x3 + x2)
1786_1_parts_InvokeMethod(1018_0_parts_Return(x0), x0) → 3772_0_parts_Return(arith[1])
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2) → 3772_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(8): 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_1163_1_MAIN_INVOKEMETHOD2(x3[8] > -1 && x1[8] > 0, 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
(5): COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], x1[5] + 1)
(3): COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
(2): 1056_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1056_0_MAIN_GT1(x2[2] <= x0[2], java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
(11): COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], x3[11] + 1)

(5) -> (2), if (java.lang.Object(ARRAY(x3[5])) →* java.lang.Object(ARRAY(x0[2]))∧x0[5]* x1[2]x1[5] + 1* x2[2])


(11) -> (2), if (java.lang.Object(ARRAY(x1[11])) →* java.lang.Object(ARRAY(x0[2]))∧x2[11]* x1[2]x3[11] + 1* x2[2])


(2) -> (3), if (x2[2] <= x0[2]java.lang.Object(ARRAY(x0[2])) →* java.lang.Object(ARRAY(x0[3]))∧x1[2]* x1[3]x2[2]* x2[3])


(3) -> (8), if (1163_0_parts_Load(x1[3], x2[3]) →* 1004_0_parts_Return(x0[8], x1[8])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[8]))∧x1[3]* x0[8]x2[3]* x1[8])



The set Q consists of the following terms:
1163_0_parts_Load(x0, x1)
997_0_parts_GT(x0, x1)
Cond_997_0_parts_GT(TRUE, x0, x1)
Cond_997_0_parts_GT1(TRUE, 0, x0)
Cond_997_0_parts_GT2(TRUE, x0, x1)
Cond_997_0_parts_GT3(TRUE, x0, x1, x2)
1055_1_parts_InvokeMethod(1004_0_parts_Return(x0, x0), x1, x0)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
1063_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x2, x1)
Cond_1063_1_parts_InvokeMethod(TRUE, 1004_0_parts_Return(x0, x1), x2, x1, x3)
1063_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
Cond_1063_1_parts_InvokeMethod2(TRUE, 3772_0_parts_Return(x0), x1, x2, x3)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x0)
1786_1_parts_InvokeMethod(1018_0_parts_Return(x0), x0)
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1)

(50) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 5 less nodes.

(51) TRUE

(52) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
1163_0_parts_Load(x0, x1) → 997_0_parts_GT(x1, x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT(x0 <= 0, x1, x0)
Cond_997_0_parts_GT(TRUE, x1, x0) → 1004_0_parts_Return(x0, x1)
997_0_parts_GT(0, x0) → Cond_997_0_parts_GT1(x0 > 0, 0, x0)
Cond_997_0_parts_GT1(TRUE, 0, x0) → 1018_0_parts_Return(x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT2(x1 > x0 && x1 > 0 && x0 > 0, x1, x0)
Cond_997_0_parts_GT2(TRUE, x1, x0) → 1055_1_parts_InvokeMethod(997_0_parts_GT(x0, x0), x1, x0)
997_0_parts_GT(x1, x0) → Cond_997_0_parts_GT3(x1 > 0 && x1 <= x0 && x0 > 0, x1, x0, x2)
Cond_997_0_parts_GT3(TRUE, x1, x0, x2) → 1063_1_parts_InvokeMethod(997_0_parts_GT(x1, x2), x0, x1)
1055_1_parts_InvokeMethod(1004_0_parts_Return(x0, x0), x2, x0) → 1004_0_parts_Return(x0, x2)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2, x1) → 1004_0_parts_Return(x1, x2)
1063_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x3, x1) → Cond_1063_1_parts_InvokeMethod(x1 > 0, 1004_0_parts_Return(x0, x1), x3, x1, x4)
Cond_1063_1_parts_InvokeMethod(TRUE, 1004_0_parts_Return(x0, x1), x3, x1, x4) → 1786_1_parts_InvokeMethod(997_0_parts_GT(x4, x3), x3)
1063_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2) → Cond_1063_1_parts_InvokeMethod2(x2 > 0, 3772_0_parts_Return(x0), x1, x2, x3)
Cond_1063_1_parts_InvokeMethod2(TRUE, 3772_0_parts_Return(x0), x1, x2, x3) → 1786_1_parts_InvokeMethod(997_0_parts_GT(x3, x1), x1)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x0) → 3772_0_parts_Return(x3 + x2)
1786_1_parts_InvokeMethod(1018_0_parts_Return(x0), x0) → 3772_0_parts_Return(arith[1])
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x2) → 3772_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(10): 1163_1_MAIN_INVOKEMETHOD(3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_1163_1_MAIN_INVOKEMETHOD4(x3[10] > 0 && x1[10] > -1, 3772_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
(9): COND_1163_1_MAIN_INVOKEMETHOD2(TRUE, 1004_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], x1[9] + 1)
(8): 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_1163_1_MAIN_INVOKEMETHOD2(x3[8] > -1 && x1[8] > 0, 1004_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
(5): COND_1163_1_MAIN_INVOKEMETHOD(TRUE, 1004_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], x1[5] + 1)
(4): 1163_1_MAIN_INVOKEMETHOD(1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_1163_1_MAIN_INVOKEMETHOD(x3[4] > -1 && x1[4] > -1, 1004_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
(3): COND_1056_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1163_1_MAIN_INVOKEMETHOD(1163_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
(11): COND_1163_1_MAIN_INVOKEMETHOD4(TRUE, 3772_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 1056_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], x3[11] + 1)

(3) -> (4), if (1163_0_parts_Load(x1[3], x2[3]) →* 1004_0_parts_Return(x0[4], x1[4])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[4]))∧x1[3]* x0[4]x2[3]* x1[4])


(4) -> (5), if (x3[4] > -1 && x1[4] > -11004_0_parts_Return(x0[4], x1[4]) →* 1004_0_parts_Return(x0[5], x1[5])∧java.lang.Object(ARRAY(x3[4])) →* java.lang.Object(ARRAY(x3[5]))∧x0[4]* x0[5]x1[4]* x1[5])


(3) -> (8), if (1163_0_parts_Load(x1[3], x2[3]) →* 1004_0_parts_Return(x0[8], x1[8])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[8]))∧x1[3]* x0[8]x2[3]* x1[8])


(8) -> (9), if (x3[8] > -1 && x1[8] > 01004_0_parts_Return(x0[8], x1[8]) →* 1004_0_parts_Return(x0[9], x1[9])∧java.lang.Object(ARRAY(x3[8])) →* java.lang.Object(ARRAY(x3[9]))∧x0[8]* x0[9]x1[8]* x1[9])


(3) -> (10), if (1163_0_parts_Load(x1[3], x2[3]) →* 3772_0_parts_Return(x0[10])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x1[10]))∧x1[3]* x2[10]x2[3]* x3[10])


(10) -> (11), if (x3[10] > 0 && x1[10] > -13772_0_parts_Return(x0[10]) →* 3772_0_parts_Return(x0[11])∧java.lang.Object(ARRAY(x1[10])) →* java.lang.Object(ARRAY(x1[11]))∧x2[10]* x2[11]x3[10]* x3[11])



The set Q consists of the following terms:
1163_0_parts_Load(x0, x1)
997_0_parts_GT(x0, x1)
Cond_997_0_parts_GT(TRUE, x0, x1)
Cond_997_0_parts_GT1(TRUE, 0, x0)
Cond_997_0_parts_GT2(TRUE, x0, x1)
Cond_997_0_parts_GT3(TRUE, x0, x1, x2)
1055_1_parts_InvokeMethod(1004_0_parts_Return(x0, x0), x1, x0)
1055_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
1063_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x2, x1)
Cond_1063_1_parts_InvokeMethod(TRUE, 1004_0_parts_Return(x0, x1), x2, x1, x3)
1063_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1, x2)
Cond_1063_1_parts_InvokeMethod2(TRUE, 3772_0_parts_Return(x0), x1, x2, x3)
1786_1_parts_InvokeMethod(1004_0_parts_Return(x0, x1), x0)
1786_1_parts_InvokeMethod(1018_0_parts_Return(x0), x0)
1786_1_parts_InvokeMethod(3772_0_parts_Return(x0), x1)

(53) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 7 less nodes.

(54) TRUE